当我在具有单个事件的db1_name上运行以下命令时,出现错误:
$mysqldump -uroot -ppwd db1_name --no-create-db --no-create-info --no-data --skip-triggers --events --set-gtid-purged=OFF | mysql -uroot -ppwd db2_name
ERROR 1064 (42000) at line 25: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*/' at line 1
mysql
服务器从本地计算机上的docker容器运行。
mysql
和mysqldump
实用程序与服务器(8.0.12)的版本相同,但直接用尽了本地计算机。
如果我将mysqldump
命令的输出转储到文件中并删除错误行上的所有注释。即来自:
/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `cleanup` ON SCHEDULE EVERY 5 MINUTE STARTS '2018-12-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO DROP TEMPORARY TABLE IF EXISTS tmp_tbl; */ ;;
收件人:
CREATE DEFINER=`root`@`%` EVENT `cleanup` ON SCHEDULE EVERY 5 MINUTE STARTS '2018-12-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO DROP TEMPORARY TABLE IF EXISTS tmp_tbl; ;;
然后导入该文件即可正常进行...
PS:这不是定界符问题:语句由mysqldump创建,该语句处理定界符更改(从;
到;;
并返回。我没有在上面复制/粘贴这些定义,但是它们显然存在于mysqldump输出中)