mysqldump --add-drop-procedure或DROP PROCEDURE IF EXISTS

时间:2017-09-22 01:40:55

标签: mysql

我需要使用mysqldump和replace代替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,但它似乎不存在

我在exports.sql文件中看到过,我发现了一些这样的

/*!50003 DROP PROCEDURE IF EXISTS `my_test_procedure` */;

但似乎被评论,所以不能工作

以下是整个代码:

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

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

  

但似乎被评论,所以不能工作

这是评论。它看起来只有一个。

mysqldump

此格式表示“仅当您是MySQL服务器时才执行此语句,且仅当您的版本为5.00.03或更高版本时才执行此语句。”

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

您会注意到parents()个文件包含了类似的语句,所有这些都是正常执行的。