在 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 表名的主要内容,如果未能解决你的问题,请参考以下文章

安全地重命名远程源分支[重复]

递归地重命名字典列表中的字典键

flyway的快速入门教程

如何在 MacOS 中递归地重命名文件夹和文件

Flyway详解以及Springboot集成Flyway, 数据库脚本版本管理

键盘输入错误地重定向到命名管道读取