当我运行 mysqldump 时,我得到一个错误:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
这是有道理的,因为foobar它是不再存在的遗留机器。
foobar
如何将所有表的定义器更改为’root’@’localhost’?
我认为您尝试转储的数据库包含用户在以 root@’foobar’ 身份登录时定义的过程/方法。
现在的解决方案是您必须替换该程序/方法的定义器
然后您可以生成没有错误的转储。
你可以这样做..
UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar'
请小心,因为这将更改所有数据库的所有定义器。
试试看....!
@RolandoMySQLDBA 编辑 2011-12-16 11:20 EDT
虽然有风险,但这个答案很好。澄清一下:您可以像这样在查询中指定数据库:
UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar' AND db='whateverdbyouwant';