使用 Liquibase xml 更新列名时出错
Error While update column name with Liquibase xml
我正在尝试在 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 进行相同的操作,则此代码会抛出错误。
对这类问题有什么想法吗?
我不知道为什么会这样,但我可以建议一个故障排除步骤 - 不要使用 liquibase update
命令,而是尝试使用 updateSQL
命令,它将生成 SQL 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 进行相同的操作,则此代码会抛出错误。
对这类问题有什么想法吗?
我不知道为什么会这样,但我可以建议一个故障排除步骤 - 不要使用 liquibase update
命令,而是尝试使用 updateSQL
命令,它将生成 SQL liquibase 运行。将其与您手动执行的操作进行比较,看看您是否可以分辨出不同之处。