使用 Linux 命令恢复 MySQL 转储时跳过触发器

Skip triggers while restoring MySQL dump using Linux command

我有一个 MySQL 数据库(多个数据库备份)的大型转储(~50GB)。我正在将它恢复到需要很长时间的新服务器。我认为它花费了这么多时间,因为它是巨大的数据。命令 ( gunzip < 1922-1648-329-75_all-databases.sql.20220305-0000.gz | MySQL -u test -p) 也工作正常并开始导入。但一段时间后,我收到一个名为“'OLD' 中的未知列 'id'”的错误。我有故障,发现此错误来自备份文件中的触发器之一。 我真的不需要新服务器上的触发器。 MySQL 中是否有命令行选项可以让我在恢复转储时跳过触发器?

下面是我正在使用的Restore Commane

gunzip < 1922-1648-329-75_all-databases.sql.20220305-0000.gz | MySQL -u 测试 -p

如果可以,请使用 --skip-triggers 选项重新创建转储。之后您将不得不重新创建它们。

https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_triggers

没有可用于在导入时禁用触发器的选项。

重写错误的触发代码。

您有一个 INSERT 触发器,其中包含 OLD,这是不受支持的。

可能是复制粘贴错误,但是在备份运行之前必须做这样的事情。

下面的 link 向您展示了如何 select 所有触发器,这应该有助于找到有问题的触发器

How do you list all triggers in a MySQL database?