【发布时间】:2013-02-05 17:37:09
【问题描述】:
我正在使用 mysqldump 进行包含触发器的备份,并且在执行导入时会导致以下分隔符语法错误:
第 1059 行出现错误:DELIMITER 必须后跟
delimiter字符或字符串第 1060 行的错误 1064 (42000):您的 SQL 语法有错误;从正确的语法中检查与您的 MySQL 服务器版本相对应的手册,以便在第 5 行的 `` 附近使用
第 1059 行在触发语句之前设置分隔符:DELIMITER ;;
第 1060 行是:/!50003 CREATE/ /!50017 DEFINER=user@%/ /*!50003 TRIGGER database.@987654326 @
触发器是用 DELIMITER $$ 放入的。但是,备份时生成的 sql 文件有 DELIMITER ;;而不是 $$。我已经手动更改了 DELIMITER ;;到 mysqldump 文件中的 DELIMITER $$ 并使用 mysqlworkbench 成功导入。有没有办法让 mysqldump 输出用于创建触发器的原始分隔符?
谢谢
【问题讨论】:
-
转储是如何进行的?
DELIMITER ;;是否在命令中明确指定? -
转储是从带有 --trigger 标志的命令行获取的。在转储 sql 文件中,所有分隔符命令都是 DELIMITER ;;
-
我猜这是故意的,触发器被注释掉以支持早期版本(3.x,4.x)中的转储。 MySQL Bug #33494.
-
是的,但问题在于分隔符,因为当我手动将分隔符语句更改为使用 $$ 时,触发器已成功导入。想知道是否有办法让mysql首先输出输入触发器时使用的分隔符。
标签: mysql triggers mysqldump delimiter