前段时间用mysqldump导出sql,由于不太熟悉mysqldump出现了一大堆问题,其中一个触发器导出问题折磨了我好久,这里记载下免得忘记。
1 $cmd = "mysqldump.exe --user=root --password=123456 --opt --skip-comments datas scheme >D:\sql\scheme.sql"; 2 system($cmd);
这里导出datas数据库的scheme表的sql 去掉注释 也默认导出触发器,但用phpmyadmin 导入sql时(80多个表 10个表有触发器 wamp环境 php5.3.13 mysql5.5.24)老出现个别表导入报错,而且固定3个表的触发器无法导入(查看sql 文件能看到有触发器)而且报错行数也指向触发器。
后面把导出参数换为
--compact 去掉注释和头尾等结构。相当于选项:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys
1 $cmd = "mysqldump.exe --user=root --password=123456 --opt --compact datas scheme >D:\sql\scheme.sql"; 2 system($cmd);
问题依旧没有得到解决,一度以为是数据或触发器出错了。
于是抱着试一试的态度我把导出参数改了一下变为:
1 $cmd = "mysqldump.exe --user=root --password=123456 --opt --opt --skip-comments --skip-disable-keys --skip-set-charset datas scheme >D:\sql\scheme.sql"; 2 system($cmd);
居然phpmyadmin 可以导入了 触发器也不少了。 问题解决但不清楚怎么回事难道是 --skip-set-charset ?
这里记下。