Når jeg kjører følgende spørring, får jeg en feil:
SELECT
`a`.`sl_id` AS `sl_id`,
`a`.`quote_id` AS `quote_id`,
`a`.`sl_date` AS `sl_date`,
`a`.`sl_type` AS `sl_type`,
`a`.`sl_status` AS `sl_status`,
`b`.`client_id` AS `client_id`,
`b`.`business` AS `business`,
`b`.`affaire_type` AS `affaire_type`,
`b`.`quotation_date` AS `quotation_date`,
`b`.`total_sale_price_with_tax` AS `total_sale_price_with_tax`,
`b`.`STATUS` AS `status`,
`b`.`customer_name` AS `customer_name`
FROM `tbl_supplier_list` `a`
LEFT JOIN `view_quotes` `b`
ON (`b`.`quote_id` = `a`.`quote_id`)
LIMIT 0, 30
Feilmeldingen er:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Hvorfor får jeg denne feilen? Hvordan fikser jeg den?
Brukeren 'web2vi' eksisterer ikke på mysql-serveren din.
Se http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Hvis den brukeren eksisterer, sjekk hvilke servere den kan få tilgang til fra, selv om jeg hadde trodd det ville være en annen feil (EG du kan ha web2vi@localhost, men du får tilgang til db som web2vi@% (På noe)
Fra MySQL-referanse i CREATE VIEW
:
DEFINER- og SQL SECURITY-klausulene angir sikkerhetskonteksten som skal brukes ved kontroll av tilgangsrettigheter ved visningskallingstidspunktet.
Denne brukeren må eksistere og er alltid bedre å bruke 'localhost' som vertsnavn. Så jeg tror at hvis du sjekker at brukeren eksisterer og endrer den til "localhost" når du oppretter visning, vil du ikke ha denne feilen.