我正在尝试使用mysqldump导出一个需要使用不同数据库名称导入的数据库。查看mysqldump生成的SQL,似乎触发器是唯一使用源数据库名称完全限定的对象名称,因此破坏了我的需求。是否有办法指示mysqldump不要完全限定任何对象名称,包括触发器?
CREATE TRIGGER trigger_name
,除了一个例外:CREATE TRIGGER dbname.trigger_name
(这只是我的错误)。Mysqldump输出以相同的方式包含了所有触发器:只有一个带有数据库名称。CREATE TRIGGER
指令,您可以通过SHOW CREATE TRIGGER
查看它们。如果您定义了一个带有数据库名称的触发器,请用一个不带dbname的触发器替换它(删除并创建)。这不是一个理想的解决方案,但是通过以下方式将输出传递已经让触发器中的数据库名称消失了。
mysqldump ... opts ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'