Помилка MySQL 1449: Користувач, вказаний як визначник, не існує

При виконанні наступного запиту я отримую помилку:

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@% (На будь-чому)

Коментарі (0)

З посилання на MySQL з CREATE VIEW:

Речення DEFINER та SQL SECURITY визначають контекст безпеки, який буде використовуватися при перевірці привілеїв доступу під час виклику подання.

Цей користувач повинен існувати і завжди краще використовувати 'localhost' в якості імені хоста. Тому я думаю, що якщо ви перевірите, що користувач існує, і зміните його на 'localhost' при створенні подання, у вас не буде цієї помилки.

Коментарі (0)

Перейдіть до розділу редагування процедури і внизу змініть тип безпеки з Definer на Invoker.

Коментарі (2)