使用 sql dump 克隆数据库时出现 MYSQL 错误 - 错误 1359 (HY000) : Trigger already exists

标签 mysql database-trigger

我有一个用于实时项目的 MySQL 数据库,我想在可用于开发目的的同一台服务器上创建它的副本。我已经使用 MySQL 转储创建了实时数据库的副本。我这样做如下:

mysqldump -u root -p mydatabase_live > mydatabase_dump.sql

然后我登录到 MySQL 并创建了一个名为 mydatabase_test 的空数据库。然后我尝试通过退出 MySQL 并执行以下操作将转储复制到新创建的 database_test:

mysql -u root -p database_test < mydatabase_dump.sql

这在第 527 行给我错误消息 ERROR 1359 (HY000):触发器已存在。

当我重新登录到 MySQL 并检查我刚刚转储的数据库上的触发器时,我看不到任何具有重复名称的触发器。我已经尝试重复上述过程以防初始转储中出现某种错误,但问题仍然存在。

谁能解释为什么我会收到此错误消息以及如何解决这个问题?

我正在使用适用于 Linux 的 MySQL Ver 14.14 Distrib 5.7.25

* 请注意在下面接受的答案中添加详细信息 * 可以在文本编辑器中打开 MySQL 转储文件。我用过vi。解决方案是找到触发器并更改触发器名称的一部分,将其标识为属于您从中获取转储的模式,将其更改为您针对转储的模式。在我的例子中,这意味着将 mydatabase_live.my_table 更改为 mydatabase_test.my_table。然后登录mysql,删除测试表然后重新创建它,然后注销并再次执行复制命令。

最佳答案

触发器存储在 Information_Schema.Triggers 表中。也许这就是为什么您不能复制它们,也许可以用不同的名称创建一个新的?

在这里查看更多信息

https://dev.mysql.com/doc/refman/8.0/en/faqs-triggers.html

关于使用 sql dump 克隆数据库时出现 MYSQL 错误 - 错误 1359 (HY000) : Trigger already exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54578970/

相关文章:

mysql - 修改 MySQL 触发器

postgresql - 检测更新不会更改行的触发器

sql - postgresql 触发器函数上的 $BODY$ 是用来做什么的?

sql - 一对多关系的最大约束 - Oracle SQL

mysql - 映射到另一个表(其实际值保存在 MySQL 中)的表的效率

MySQL,如何重复同一行x次

php - Mysql 搜索表 w/php 并返回结果

mysql - Entity Framework - 插入相关表

mysql - 我如何获得每小时的第一行?

sql - 如何将 postgres 函数重用于触发器和一般用途