mysqldump:Got error:一四四九:

6yoyoihd  于 2023-05-05  发布在  Mysql
关注(0)|答案(6)|浏览(196)

mysqldump:Got error:1449:使用LOCK TABLES时,指定为definer('root'@'192.200.1.16')的用户不存在
请给予上述错误的解决方案。

csbfibhn

csbfibhn1#

最好使用第一个mysqldump和--single-transaction,比如:

mysqldump --single-transaction -u root -p mydb > mydb.sql

如果上面不行,试试下面一个。
您必须替换该过程/方法的定义器,然后才能生成无错误的转储。
你可以这样做:

UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@192.200.1.16'

第三方编辑

对于mysql 8.0,表proc不再存在。试试看

SELECT * FROM information_schema.routines;
kyvafyod

kyvafyod2#

在从另一台主机复制所有视图和表后,我也遇到了同样的问题。
在我使用查询from this answer更改数据库中的所有定义符后,它就工作了。
为方便起见,在此复制:

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

z4bn682m3#

mysqldump -u user -ppassword --lock-tables=false --default-auth=mysql_native_password dbname〉dump.sql

xam8gpfp

xam8gpfp4#

我有一个类似的问题,问题是,想迁移数据库从一个示例到另一个,但在转储也是程序,引用其他数据库,所以我标记了错误,并通过修改程序或未能删除一些纠正.

izkcnapc

izkcnapc5#

最新的答案提到使用--single-transaction确保当您恢复该备份时,您将再次面临该错误,因此最好的解决方案是更改定义者,如果用户缺少当前正在使用的任何管理员用户的添加定义者。

gstyhher

gstyhher6#

试试这个:

mysqldump -h hostname -u thomas -p -x dbname >  xxx_2015_03_25.sql

相关问题