5

我正在尝试使用 mysqldump 导出需要使用不同数据库名称导入的数据库。查看 mysqldump 生成的 SQL,似乎触发器是唯一与源数据库名称完全限定的对象名称,从而挫败了我的需求。无论如何,是否有指示 mysqldump 不完全限定任何对象名称,包括触发器?

4

3 回答 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 回答