我试图在Linux机器MYSQL上使用Liquibase xml来更新数据库列名。
我的更新列的xml代码是
<renameColumn tableName="AAA" oldColumnName="bbb_id" newColumnName="ccc_id" columnDataType="bigint" />
但这一行是ERROR [2017-11-16 15:42:28,247] liquibase: migrations.xml: migrations.xml::3.15.1::maulik.kakadiya: Change Set migrations.xml::3.15.1::maulik.kakadiya failed. Error: Error on rename of './MY_DB/#sql-4bf_322' to './MY_DB/AAA' (errno: 150) [Failed SQL: ALTER TABLE MY_DB.AAA CHANGE bbb_id ccc_id BIGINT]
收到此错误后,我尝试了以下简单的SQL查询
<sql>ALTER TABLE `AAA` CHANGE COLUMN `bbb_id` `ccc_id` BIGINT(20);
<comment>find onther why, beacuse rename query throw error</comment>
</sql>
“bbb_id”也是一个外键引用。
但是这句话引发了同样的错误。
但是,如果我按照下面的查询运行此语句的简单SQL查询
ALTER TABLE `AAA` CHANGE COLUMN `bbb_id` `ccc_id` BIGINT(20);
然后这个SQL查询成功运行,但是如果我尝试使用Liquibase xml进行相同的操作,那么这段代码就会抛出错误。
对这类问题有什么想法吗?
答案 0 :(得分:0)
我不知道它为什么会发生,但我可以建议一个故障排除步骤 - 而不是使用liquibase update
命令,尝试使用updateSQL
命令生成SQL liquibase运行。将其与您手动执行的操作进行比较,看看您是否可以分辨出差异。