我在AWS上使用了一个大型数据库几个月,但因为它开始变得昂贵而被迫关闭。恢复MySQL数据库时'系统表无法在系统表上创建触发器'错误
现在,我的硬盘上有一个32GB文件,在关闭实例上运行的MySQL数据库之前导出。
我想在我的笔记本电脑上导入400万行左右的本地MySQL。
使用MySQL Workbench,我试图做到这一点。但首先,我在本地重新创建了完全相同的模式(只有3个表格)。然后,使用“数据导入”选项,我选择“从自备文件导入”,并指向我的文件。我让它撕裂 - 只有收到这个令人沮丧的信息作为回应:
01:56:30 PM Restoring /home/monica/dumps/Dump20160406.sql
Running: mysql --defaults-file="/tmp/tmpMJpTQj/extraparams.cnf" --protocol=tcp --host=127.0.0.1 --user=root --port=3306 --default-character-set=utf8 --comments --database=my_db < "/home/monica/dumps/Dump20160406.sql"
ERROR 1465 (HY000) at line 488: Triggers can not be created on system tables
Operation failed with exitcode 1
它看起来像触发器有问题吗?首先我有点困惑,因为我的数据库从来没有任何触发器开始。
为了排除故障,我找到了t his SO question,我试了一下建议 - 我编辑了my.conf文件,但没有任何区别。
其他搜索导致我空白。我可以找到的这个错误真的没有什么。
如果有人有任何建议,那就太好了。谢谢。
编辑
我从@Solarflare的评论中使用的一些建议和使用这样的说法:
mysql -u root -p for_import -o < /home/monica/dumps/Dump20160406.sql
其实,我发现了一个叫Pipe Viewer它提供一个进度条,酷工具 - - 视觉证明(我希望)事情正在发生。所以我改写线这样的:
pv /home/monica/dumps/Dump20160406.sql | mysql -u root -p -o for_import
果然,它看起来像事情工作,5分钟左右后,进口完成:
34.1GB 0时08分19秒[ 69.9MB/s] [==================================>] 100%
不错! 但是:当我show databases
然后use for_import
然后show tables
,我得到:
Empty set (0.00 sec)
我的心脏坏了。 :(
只是为了确保并尝试帮助,如果你以某种方式错过了,就像我经常这样做 - 因为所提到的答案表示触发器问题是通过mysql conf设置更改解决的 - 这看起来像是一个权限问题:您是否重新启动你的mysql服务器编辑完mysql后?第二个问题,而不是工作台 - 我不信任 - 你是否尝试命令行来恢复数据库?无需创建模式,只需要空白数据库。我希望你解决了它,我可以告诉你对此感觉如何。 – smozgur
您可以添加选项'-o'或'--one-database'来忽略所有不针对数据库'my_db'(假设它具有相同名称)的所有内容,所以基本上只需使用'mysql --defaults- file =“/ tmp/tmpMJpTQj/extraparams.cnf”--protocol = tcp --host = 127.0.0.1 --user = root --port = 3306 --default-character-set = utf8 --comments --database = my_db -o <“/home/monica/dumps/Dump20160406.sql”'(你可以直接在命令行执行) – Solarflare
@Solarflare:谢谢你!我的问题是,'file =“/ tmp/tmpMJpTQj/extraparams.cnf”'从哪里来的? –