在 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.
你应该考虑多种情况
- 重命名视图引用的 table
- 重命名存储过程引用的 table
- 重命名具有引用
的外键的 table
此 link 将帮助用户安全地重命名您的 table。
https://www.mysqltutorial.org/mysql-rename-table/
我要通过 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.
你应该考虑多种情况
- 重命名视图引用的 table
- 重命名存储过程引用的 table
- 重命名具有引用 的外键的 table
此 link 将帮助用户安全地重命名您的 table。 https://www.mysqltutorial.org/mysql-rename-table/