Lorsque j'exécute la requête suivante, j'obtiens une erreur :
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
Le message d'erreur est :
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Pourquoi est-ce que je reçois cette erreur ? Comment puis-je la corriger ?
L'utilisateur 'web2vi' ; n'existe pas sur votre serveur mysql.
Voir http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Si cet utilisateur existe, vérifiez à partir de quels serveurs il peut accéder, bien que j'aurais pensé que ce serait une erreur différente (EG vous pourriez avoir web2vi@localhost, mais vous accédez à la base de données en tant que web2vi@% (à n'importe quel endroit)).
D'après la [référence MySQL][1] de CREATE VIEW
:
Les clauses DEFINER et SQL SECURITY spécifient le contexte de sécurité à utiliser lors de la vérification des privilèges d'accès au moment de l'invocation de la vue.
Cet utilisateur doit exister et il est toujours préférable d'utiliser 'localhost' ; comme nom d'hôte. Je pense donc que si vous vérifiez que l'utilisateur existe et le changez en 'localhost' ; lors de la création de la vue, vous n'aurez pas cette erreur.
[1] : http://dev.mysql.com/doc/refman/5.6/en/create-view.html