在Flyway脚本中安全地重命名MySQL表名



我将通过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,请参阅此问题。

您应该考虑多种情况

  1. 重命名视图引用的表
  2. 重命名存储过程引用的表
  3. 重命名引用了外键的表

此链接将帮助用户安全地重命名表。https://www.mysqltutorial.org/mysql-rename-table/

最新更新