在 Flyway 脚本中安全地重命名 MySQL 表名
Posted
技术标签:
【中文标题】在 Flyway 脚本中安全地重命名 MySQL 表名【英文标题】:Rename MySQL table name safely in Flyway script 【发布时间】:2021-07-04 14:02:40 【问题描述】:我将通过 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
有人可以建议如何处理吗?
非常感谢!
【问题讨论】:
【参考方案1】:IF EXISTS
使用IF EXISTS
子句。如果没有找到这样的表,该命令将停止,但没有任何效果。
ALTER TABLE IF EXISTS name
RENAME TO new_name
;
这个works in Postgres。我不了解 MySQL。
【讨论】:
不幸的是,这似乎不是 MySQL 的有效语法...感谢您的快速回复! 原理是正确的,只是语法上的小调整。见***.com/questions/16837134/…以上是关于在 Flyway 脚本中安全地重命名 MySQL 表名的主要内容,如果未能解决你的问题,请参考以下文章