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

Rename MySQL table name safely in Flyway script

我要通过 Flyway SQL 脚本重命名 MySQL 8.0 table:

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 子句。如果没有找到这样的 table,该命令将停止,没有任何效果。

ALTER TABLE IF EXISTS name
RENAME TO new_name 
;

这个works in Postgres. For MySQL, see this Question.

你应该考虑多种情​​况

  1. 重命名视图引用的 table
  2. 重命名存储过程引用的 table
  3. 重命名具有引用
  4. 的外键的 table

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