MariaDB执行UPDATE语句报错:Truncated incorrect DOUBLE value
问题原因与解决方法
报错原因
MariaDB里的+是算术加法运算符,不是字符串拼接符。当你执行'2022-10-14' + lastvisited时,数据库会尝试把两个操作数转成数值类型(DOUBLE)做计算,但'2022-10-14'包含非数字的-符号,无法正常转换为数值,因此触发了Truncated incorrect DOUBLE value错误。
正确写法
如果要把日期字符串拼接到lastvisited字段的前面,用MariaDB的字符串拼接函数CONCAT()即可:
UPDATE communities SET lastvisited = CONCAT('2022-10-14', lastvisited) WHERE id = 26;
要是需要在两个字符串之间加分隔符(比如逗号、空格),可以在CONCAT()里额外加分隔符参数:
UPDATE communities SET lastvisited = CONCAT('2022-10-14', ', ', lastvisited) WHERE id = 26;
额外建议
用varchar(255)存储日期列表的设计不够规范,后续查询、维护都会有麻烦。更合理的方案是:
- 改用
JSON类型存储日期数组,方便直接操作单个日期元素 - 新建关联表(比如
community_visits),每条记录存一个访问日期和对应的社区ID,符合数据库范式设计
内容的提问来源于stack exchange,提问作者Blake Price
相关产品推荐
相关产品推荐

