mysql - Liquibase 修改数据类型在 Mysql 上失败

标签 mysql liquibase

我似乎无法在 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/

相关文章:

mysql - 获取 MySQL 中现有行的插入语句

java - 在 liquibase 中删除表的唯一约束列时出现错误

Spring-boot liquibase 集成

mysql - 从多个表中选择数据,其中特定表不包含任何可识别的列?

MySQL触发器在插入之前修改col

mysql - 重复键更新与插入相同

mysql - Liquibase格式化的sql前提条件tableExists

oracle - 如何扩展 Liquibase 以生成带有存储过程、函数和触发器的更改日志?

mysql - 如果不与 liquibase 重复,如何插入值?

php - MySQL 查询根据 ID 连接所有字段以获取 facebook 之类的通知