我正在尝试将Liquibase从2.0.5升级到3.2.2。 Liquibase 3.2.2已将MySQL的布尔类型实现从tinytint(1)更改为位(1)。这打破了我们的许多历史变革集,例如:在我们设置默认值的地方,如:default =“1”(失败,错误数据截断:MySQL 5.6.16中的列数据太长)。
我没有重写/修改变更集历史记录,而是在寻找一种更简单的方法来处理它,以便我们可以升级。我不反对告诉Liquibase继续使用tinyint(1)for mysql。我在用户论坛上看到了关于扩展liquibase.database.typeconversion.core.MySQLTypeConverter以完成它的注释,但该机制似乎在3.2.2中不可用。
知道我如何告诉Liquibase 3.2.2继续使用tinyint(1)?如果不这样做,关于如何处理这个问题的任何其他想法如果不重写变更集历史记录?
答案 0 :(得分:3)
使用3.2.2,TypeConverterLogic已移至特定类型的类。因此,您可以覆盖liquibase.datatype.core.BooleanType和toDatabaseDataType()方法以返回TINYINT(1)而不是BIT(1)