我似乎无法在 Mysql 5.7.10 实例上执行类型修改(尽管它适用于 H2)。
以下是相关领域涉及的变更集步骤:
创作:
<column name="last_modify_time" type="bigint">
<constraints nullable="false" />
</column>
修改:
<modifyDataType tableName="USER" columnName="last_modify_time" newDataType="timestamp" />
Mysql中的错误信息是
Invalid default value for 'last_modify_time' [Failed SQL: ALTER TABLE USER MODIFY last_modify_time timestamp]
将请求手动修改为以下工作:
ALTER TABLE USER MODIFY last_modify_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
我不是很明白为什么Mysql需要默认值。也许这是 5.7.10 版的边缘案例(使用默认配置选项)。 无论如何,Liquibase 应该能够处理它。
我尝试在 modifyDataType
之前添加/删除默认值,但没有成功。
最佳答案
当您使用不可为 null 的 liquibase 修改列的类型时...您必须首先使其可为 null,然后使用安全修改对其进行修改
关于mysql - Liquibase 修改数据类型在 Mysql 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34986220/