При виконанні наступного запиту я отримую помилку:
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
Повідомлення про помилку таке:
#1449 - The user specified as a definer ('web2vi'@'%') does not exist
Чому я отримую цю помилку? Як її виправити?
Користувач 'web2vi' не існує на вашому mysql сервері.
Перевірте http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html#error_er_no_such_user
Якщо цей користувач існує, перевірте, з яких серверів він може отримати доступ, хоча я думав, що це буде інша помилка (наприклад, у вас може бути web2vi@localhost, але ви отримуєте доступ до бази даних як web2vi@% (На будь-чому)
З посилання на MySQL з CREATE VIEW
:
Речення DEFINER та SQL SECURITY визначають контекст безпеки, який буде використовуватися при перевірці привілеїв доступу під час виклику подання.
Цей користувач повинен існувати і завжди краще використовувати 'localhost' в якості імені хоста. Тому я думаю, що якщо ви перевірите, що користувач існує, і зміните його на 'localhost' при створенні подання, у вас не буде цієї помилки.
Перейдіть до розділу редагування процедури і внизу змініть тип безпеки з Definer на Invoker.