我正在使用mysqldump进行包含触发器的备份,并且在执行导入时会产生以下分隔符语法错误:
第1059行的错误:DELIMITER后面必须跟一个分隔符或字符串ERROR 1064(42000)第1060行:您的SQL语法出错了;从正确的语法查看与MySQL服务器版本对应的手册,在第5行的``附近使用
第1059行在触发器声明之前设置分隔符:DELIMITER ;;
1060行是:/!50003 CREATE / /!50017 DEFINER = user
@ %
/ / *!50003 TRIGGER database
. t_auditclients
使用DELIMITER $$输入触发器 . 但是,备份时生成的sql文件有DELIMITER ;;而不是$$ . 我手动更改了DELIMITER ;;在mysqldump文件中使用DELIMITER $$并使用mysqlworkbench成功导入 . 有没有办法让mysqldump输出用于创建触发器的原始分隔符?
谢谢
1 回答
Linux上的解决方案是运行以下命令:
这将创建一个新文件,其中root @ localhost或其他任何内容已被取出并由CREATE DEFINER = CURRENT_USER替换,并且所有50003/50017废话都消失了它只是起作用 . 哈利路亚!
注意:要使其在OS X上运行,您不能使用sed的内置版本 . 你可以
brew install gnu-sed
,然后打开一个新的终端窗口,并执行上面的命令,除了使用gsed
而不是sed
.然后运行SQL当然最简单的事情就是进入mysql终端,如果需要的话,
USE
一个db,然后SOURCE fileName.sql
...获得巨大的利润 .注意:许多Bothans死于向我们提供此信息 .