Cuando ejecuto la siguiente consulta obtengo un error:
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
El mensaje de error es:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
¿Por qué recibo ese error? ¿Cómo puedo solucionarlo?
El usuario 'web2vi' no existe en su servidor mysql.
Ver http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Si ese usuario existe, comprueba desde qué servidores puede acceder, aunque yo habría pensado que sería un error diferente (por ejemplo, podrías tener web2vi@localhost, pero estás accediendo a la db como web2vi@% (En cualquier cosa)
De referencia MySQL de CREATE VIEW
:
Las cláusulas DEFINER y SQL SECURITY especifican el contexto de seguridad a utilizar cuando se comprueban los privilegios de acceso en el momento de invocar la vista.
Este usuario debe existir y siempre es mejor utilizar 'localhost' como nombre de host. Así que creo que si compruebas que el usuario existe y lo cambias a 'localhost' en la creación de la vista no tendrás este error.