我正在尝试使用 mysqldump 导出需要使用不同数据库名称导入的数据库。查看 mysqldump 生成的 SQL,似乎触发器是唯一与源数据库名称完全限定的对象名称,从而挫败了我的需求。无论如何,是否有指示 mysqldump 不完全限定任何对象名称,包括触发器?
问问题
1663 次
3 回答
5
我有同样的问题,我找到了解决方案。我使用 MySQL Workbench 来设计我的数据库,并在那里创建了一些触发器。CREATE TRIGGER trigger_name
除了一个之外,他们都使用了语法:(CREATE TRIGGER dbname.trigger_name
这只是我的错误)。Mysqldump 输出以相同的方式包含所有触发器:只有一个具有数据库名称。
Mysqldump 使用您CREATE TRIGGER
可以通过查看的原始说明SHOW CREATE TRIGGER
。如果您有一个使用数据库名称定义的触发器,只需将它(删除和创建)替换为一个不带 dbname 的触发器。
于 2013-02-19T14:26:51.917 回答
1
很可能您在创建触发器时添加了数据库名称。尝试更新没有数据库名称的触发器。
于 2011-03-26T14:12:30.607 回答
-1
不是一个理想的解决方案,但通过以下方式输出输出已经摆脱了触发器上的数据库名称。
mysqldump ... opts ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'
于 2012-10-16T20:56:10.900 回答