我需要与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文件中看到了一些类似的东西
/*!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知道怎么解决这个问题吗?
发布于 2017-09-22 05:53:03
但似乎被评论了,所以不起作用
这是,而不是评论。看上去只有一个。
/*!50003 DROP PROCEDURE IF EXISTS `my_test_procedure` */;这种格式意味着“只有当您是MySQL服务器时,并且只有当您的版本为5.00.03或更高版本时,才执行此语句”。
https://dev.mysql.com/doc/refman/5.7/en/comments.html
您会注意到,mysqldump文件中填充了类似的语句,所有这些语句都是正常执行的。
https://stackoverflow.com/questions/46355598
复制相似问题