【问题标题】:dealing with liquibase upgrade that changed MySQL boolean type from tinyint to bit处理将 MySQL 布尔类型从 tinyint 更改为 bit 的 liquibase 升级
【发布时间】:2014-09-16 16:26:52
【问题描述】:

我正在尝试将 Liquibase 从 2.0.5 升级到 3.2.2。 Liquibase 3.2.2 已将 MySQL 的布尔类型实现从 tinytint(1) 更改为 bit(1)。这打破了我们的许多历史变更集,例如在我们设置默认值的地方,如下所示:default="1"(失败并出现错误 Data truncation: Data too long for column in MySQL 5.6.16)。

与其重写/修复大量变更集历史记录,我正在寻找一种更简单的方法来处理它,以便我们可以升级。我不反对告诉 Liquibase 继续为 mysql 使用 tinyint(1)。我在用户论坛中看到了关于扩展 liquibase.database.typeconversion.core.MySQLTypeConverter 来完成它的注释,但该机制在 3.2.2 中似乎不可用。

知道我如何告诉 Liquibase 3.2.2 继续使用 tinyint(1) 吗?如果做不到这一点,关于如何在不重写变更集历史记录的情况下处理这个问题的任何其他想法?

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    在 3.2.2 中,TypeConverterLogic 已移至特定于类型的类。因此,您可以覆盖 liquibase.datatype.core.BooleanType 和 toDatabaseDataType() 方法以返回 TINYINT(1) 而不是 BIT(1)

    【讨论】:

    • 在 liquibase 网站上有没有关于如何做到这一点的文档?我找不到太多东西,我想从旧版本的 Liquibase 升级,最好保留 TINYINT,而不必转换所有旧的更改集。 MySQL 位处理仍然使这些痛苦。
    猜你喜欢
    • 2020-04-21
    • 2012-01-30
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    相关资源
    最近更新 更多