当前位置: 首页 > 知识库问答 >
问题:

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

岳浩宕
2023-03-14
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

为什么我会得到那个错误?我怎么修好它?

共有1个答案

舒浩邈
2023-03-14

当创建对象的用户不再存在时,将视图/触发器/过程从一个数据库或服务器导出到另一个数据库或服务器时,通常会发生这种情况。

您有两种选择:

在最初导入数据库对象时,通过从转储中删除任何definer语句,这可能是最容易做到的。

SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
table_name, " AS ", view_definition, ";") 
FROM information_schema.views 
WHERE table_schema='your-database-name';

示例:

UPDATE `mysql`.`proc` p SET definer = 'user@%' WHERE definer='root@%'

要小心,因为这将更改所有数据库的所有定义器。

如果您在使用MySQL数据库时发现以下错误:

The user specified as a definer ('someuser'@'%') does not exist`
GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;
 类似资料:
  • 我安装了新系统(Ubuntu20.04),我安装了LAMP和克隆的Laravel项目。我创建了数据库博客,我想迁移,但我有这个错误。 SQLSTATE[HY000]:一般错误:1449指定为定义者的用户('mysql.infoschema'@'localhost')不存在(SQL:select*from information\u schema.tables,其中table\u schema=bl

  • 在我的中,我有一个名为testDB的数据库,用我的命令行我试图导出数据库,但是每次我试图运行这个命令时,我都会得到错误1449: 错误是:“使用锁表时,指定为定义器('myuser'@'')的用户不存在” 我分析了sql文件,发现该用户名只在文件底部出现一次: 如果不导出数据库,也不创建新用户,因为我无法创建新用户,我该如何解决此问题? 是否可以为我的数据库使用特定的SQL命令替换此值? 我的服务

  • 多年来,我的PHP webapp在后端运行MySQL5.5都没有问题,但今天突然出现了权限问题。 所有内容都指向运行语句。我尝试过建议的各种赠款,但总是得到这样的错误: 好像我的权限被破坏了什么的。因此,我在VPS上的BlueHost控制面板内创建了一个全新的DB用户,并给予了完全的特权。我在这个全新的用户上得到了同样的错误。 我尝试用root连接到数据库(使用与连接WHM时相同的pwd),但它不

  • 我正在centos 7终端中运行mysqldump,该终端具有mysql服务器设置。(对于工作站点),它显示以下错误。 mysqldump:错误:'指定为定义器的用户('mysql.infoschema'@'localhost')不存在'时尝试转储表空间 mysqldump:无法执行“显示数据库”:指定为定义者的用户('mysql.infoschema'@'localhost')不存在(1449)

  • 问题内容: 我正在处理大量旧数据(从平面文件db转换),其中字段的格式设置为输入记录的年份的最后2位,然后是4位的增量… 例如,1998年创建的第三条记录将为“ 980003”,而2004年创建的第十一条记录将为“ 040011”。 我无法更改这些值- 它们通过他们的公司存在,已经在州,客户等中注册。我知道将年份和其余年份分隔到单独的列中会很好,但这是不可能的。我什至不能真正做到“内部”,因为每一

  • 问题内容: 我决定检查数据仓库中的UDF(这在很大程度上应该是确定性的),并且发现了一些不应该的UDF。 例如: 显示在此查询中: 为什么是这样? 问题答案: Yikes- 显然,它需要SCHEMABINDING进行其他指定,否则可能会导致性能问题 通过修复这些问题,我可能会获得一些性能提升。好的。