我正在尝试在 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 失败。错误:将“./MY_DB/#sql-4bf_322”重命名为“./MY_DB/AAA”时出错(errno:150)[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
命令,它将生成 liquibase 运行的 SQL。将其与您手动执行的操作进行比较,看看您是否可以分辨出不同之处。
关于mysql - 使用 Liquibase xml 更新列名称时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47350164/