Quando executo a seguinte consulta, recebo um erro:
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
A mensagem de erro é:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Porque é que estou a receber esse erro? Como posso corrigi-lo?
O usuário 'web2vi' não existe no seu servidor mysql.
Ver http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Se esse usuário existe, verifique de quais servidores ele pode acessar, embora eu tivesse pensado que seria um erro diferente (EG você pode ter web2vi@localhost, mas você está acessando o db como web2vi@% (Em qualquer coisa)
De referência MySQL de CREATE VIEW
:
As cláusulas DEFINER e SQL SECURITY especificam o contexto de segurança a ser utilizado na verificação dos privilégios de acesso no momento da invocação da visualização.
Este usuário deve existir e é sempre melhor usar 'localhost' como hostname. Então eu acho que se você verificar que o usuário existe e mudar para 'localhost' ao criar view você ganhou'não tem este erro.