MySQL错误1449: 指定为定义者的用户不存在。

482

运行以下查询时我会收到一个错误:

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 - 指定的定义者用户 ('web2vi'@'%') 不存在

我为什么会出现这个错误?如何解决?


8
给我们展示你的SHOW CREATE VIEW 'view_quotes'命令结果。 - jordeu
2
经过一番思考,最简单的做法是将缺失的账户添加到数据库中,这样错误就消失了。不需要复杂的程序。如果您可以添加该账户,请首先尝试这样做。 - user1794918
更简单的方法是直接创建用户! - MinhajulAnwar
1
我在插入时只是遇到了这个问题 - Datadimension
1
为什么定义者需要被定义才能进行任何简单的数据库更改,是谁设计了这种东西。 - kenorb
显示剩余3条评论
41个回答

-2

您可以创建用户名为web2vi的用户并授予所有权限


最好只授予实际需要的权限。 - Mark Fisher
谢谢您提供的解决方案。这在MySQL 8上为我解决了问题,我只是创建了缺失的用户。在这种情况下,我可以使用已创建的用户,但是在完成需要检查用户的工作后,您始终可以删除该用户。 - Ralph Ritoch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接