代码之家  ›  专栏  ›  技术社区  ›  Maulik Kakadiya

使用Liquibase xml更新列名时出错

  •  3
  • Maulik Kakadiya  · 技术社区  · 7 年前

    我试图在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]

    在得到这个错误后,我尝试了bellow简单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 回复  |  直到 7 年前
        1
  •  0
  •   SteveDonie    7 年前

    我不知道为什么会这样,但我可以建议一个故障排除步骤,而不是使用液化酶 update 命令,尝试使用 updateSQL 命令,该命令将生成liquibase运行的SQL。将其与您正在手动执行的操作进行比较,看看您是否可以看出区别。