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

3

我要通过Flyway SQL脚本重命名一个MySQL 8.0表:

RENAME TABLE aaa TO bbb;

这个脚本应该在环境中运行多次,但它不是幂等的,如果尝试第二次运行它,会抛出错误:

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

请问有人能建议一下如何处理它吗?

非常感谢!

2个回答

4

IF EXISTS

使用IF EXISTS子句。如果找不到这样的表,则该命令将停止且无效。

ALTER TABLE IF EXISTS name
RENAME TO new_name 
;

这在Postgres中可行。对于MySQL,请参见此问题


很遗憾,这似乎不是MySQL的有效语法...感谢您的快速回复! - Dmitry Adonin
1
原则是正确的,只需要进行一些小的语法调整。请参见 https://dev59.com/bGQn5IYBdhLWcg3wa2uV - Julia Hayward

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接