使用Liquibase xml更新列名时出错

时间:2017-11-17 11:58:45

标签: mysql xml liquibase

我试图在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进行相同的操作,那么这段代码就会抛出错误。

对这类问题有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道它为什么会发生,但我可以建议一个故障排除步骤 - 而不是使用liquibase update命令,尝试使用updateSQL命令生成SQL liquibase运行。将其与您手动执行的操作进行比较,看看您是否可以分辨出差异。