首页
学习
活动
专区
圈层
工具
发布

mysqldump
EN

Stack Overflow用户
提问于 2017-09-22 01:40:55
回答 1查看 2.3K关注 0票数 1

我需要与replace一起使用mysqldump,而不是insert,而不是在还原时删除数据库和表。但我需要删除并重新创建触发器和存储过程。

为此,我在--replace--skip-add-drop-table参数中使用mysqldump,并将CREATE TABLE替换为CREATE TABLE IF NOT EXIST (在php中使用str_replace() )。

当我试图恢复时,我得到了错误的trigger already exists

我通过添加--add-drop-trigger参数来解决这个问题

但是现在我有了另一个错误:PROCEDURE already exists

我搜索过一些像--add-drop-procedure这样的,但它似乎不存在

我在我的exported.sql文件中看到了一些类似的东西

代码语言:javascript
复制
/*!50003 DROP PROCEDURE IF EXISTS `my_test_procedure` */;

但似乎被评论了,所以不起作用

以下是整个代码:

代码语言:javascript
复制
mysqldump --replace --skip-add-drop-table --skip-comments --add-drop-trigger --hex-blob --routines  -u$user -p$pass -h localhost -P 3307 bd_name tbl_name > path_to_export/exported.sql

知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-22 05:53:03

但似乎被评论了,所以不起作用

这是,而不是评论。看上去只有一个。

代码语言:javascript
复制
/*!50003 DROP PROCEDURE IF EXISTS `my_test_procedure` */;

这种格式意味着“只有当您是MySQL服务器时,并且只有当您的版本为5.00.03或更高版本时,才执行此语句”。

https://dev.mysql.com/doc/refman/5.7/en/comments.html

您会注意到,mysqldump文件中填充了类似的语句,所有这些语句都是正常执行的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46355598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档