mysql - 使用 Liquibase xml 更新列名称时出错

标签 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 失败。错误:将“./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/

相关文章:

java - jetty mysql 数据库连接池

java - 获取所有 XML 节点的路径

java - Liquibase Java,变更集不适用

mysql - 更改表后更新 changeLog 文件

python - 使用 PYMYSQL 更正 Python 中的 SQL 用法

mysql - 连接多个 WordPress MySQL 表

java - 请求时间表达式(XML 语法)%= %

javascript - XML 的多级 html 下拉列表

java - Liquibase ChangeSet 与 runAlways 不由 liquibase.update 执行

java - 如何将 Excel 中的行插入到 mysql 数据库中?