Quando eseguo la seguente query ottengo un errore:
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
Il messaggio di errore è:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Perché ricevo questo errore? Come posso risolverlo?
L'utente 'web2vi' non esiste sul tuo server mysql.
Vedi http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Se quell'utente esiste, controlla da quali server può accedere, anche se avrei pensato che sarebbe stato un errore diverso (EG potresti avere web2vi@localhost, ma stai accedendo al db come web2vi@% (a qualsiasi cosa)
Da riferimento MySQL di CREATE VIEW
:
Le clausole DEFINER e SQL SECURITY specificano il contesto di sicurezza da usare quando si controllano i privilegi di accesso al momento dell'invocazione della vista.
Questo utente deve esistere ed è sempre meglio usare 'localhost' come hostname. Quindi penso che se controllate che l'utente esista e lo cambiate in 'localhost' su create view non avrete questo errore.