mysql - Liquibase 3.8 用引号插入 tinyint 值
问题描述
我正在尝试使用 liquibase 脚本将值插入 mysql:
<changeSet author="liquibase" id="6225">
<insert tableName="master">
<column name="id" value="7"/>
<column name="insightname" value="topic_modelling"/>
<column name="insighttype" value="1" valueBoolean="true"/>
</insert>
</changeSet>
但是当我尝试这个时,它给了我错误:
错误:数据截断:第 1 行的列 'insighttype' 的数据太长 [失败的 SQL:INSERT INTO db.master(id、insightname、insighttype)值('7'、'topic_modelling'、'1')]
是因为值是用引号传递的吗?解决办法是什么?
我的 Create table 语句如下所示:
CREATE TABLE ss_insightmaster (
id int(11) NOT NULL AUTO_INCREMENT,
insightname varchar(255) NOT NULL,
enabled tinyint(1) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
解决方案
每个数据库都以不同的方式处理布尔值 - Liquibase 期望的不是insighttype
类型,因为您使用的是 MySQL,正如您在 liquibase github中看到的那样。BIT
TINYINT
或者
作为一个肮脏的黑客,您可以在预期dbms
a 的地方运行变更集:NUMBER
<changeSet author="liquibase" id="6225" dbms="oracle">
<insert tableName="master">
<column name="id" value="7"/>
<column name="insightname" value="topic_modelling"/>
<column name="insighttype" value="1" valueBoolean="true"/>
</insert>
</changeSet>
推荐阅读
- java - 隐藏标记中的片段,以便用户看不到 postId
- c# - 获取远程文件大小时的HttpClient高数据使用率
- java - 内存数据库和编程语言内存管理/垃圾收集
- gatling - 使用帕累托原理对输入源进行加特林负载测试
- ios - 来自协议的通用类初始化
- python - Python 我应该使用哪个 itertools 模块函数?
- python - NameError:未定义名称“PostCreateView”
- python-3.x - Coral EdgeTPU PWM 输出低平均电压问题与伺服电机
- php - Laravel 路由缓存
- python - 将列表的第一个元素与列表中的其他第一个元素匹配