我需要使用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
知道如何解决这个问题吗?
答案 0 :(得分:2)
但似乎被评论,所以不能工作
这是不评论。它看起来只有一个。
mysqldump
此格式表示“仅当您是MySQL服务器时才执行此语句,且仅当您的版本为5.00.03或更高版本时才执行此语句。”
https://dev.mysql.com/doc/refman/5.7/en/comments.html
您会注意到parents()
个文件包含了类似的语句,所有这些都是正常执行的。