我将通过Flyway SQL脚本重命名MySQL 8.0表:
RENAME TABLE aaa TO bbb;
它应该在env上运行很多次,但这样的脚本不是幂等的,我第二次遇到错误时试图运行它:
SQL State : 42S01
Error Code : 1050
Message : Table 'bbb' already exists
Location : db/migration/V7__blabla.sql (/usr/local/...)
Line : 1
Statement : RENAME TABLE aaa TO bbb
有人能建议一下如何处理吗?
非常感谢!
IF EXISTS
使用IF EXISTS
子句。如果找不到这样的表,则该命令将停止,且无效。
ALTER TABLE IF EXISTS name
RENAME TO new_name
;
这适用于Postgres。对于MySQL,请参阅此问题。
您应该考虑多种情况
- 重命名视图引用的表
- 重命名存储过程引用的表
- 重命名引用了外键的表
此链接将帮助用户安全地重命名表。https://www.mysqltutorial.org/mysql-rename-table/