赞
踩
事情是这样的,我们一个订单表存放了商品的快照信息其中快照信息存储的是json格式商品信息,当查看订单是报错了,发现我们后端服务查询到订单的快照信息进行json转Java实体时报错了,是因为json格式错误,后竟发现json格式并不完整,而该字段存储的字符串正好是设置的大小VARCHAR(4000) DEFAULT NULL
。
原来在数据库中,当数据长度超出字段设置的 VARCHAR 长度时,行为会取决于具体的数据库系统和其配置。在MySQL中,这个行为受到 SQL模式(sql_mode) 的控制。
在默认情况下,或者在非严格模式(NO_STRICT)下,当插入长度超出 VARCHAR 字段定义的字符串时,MySQL会自动截断超出的部分,并发出一个警告,而不是错误。这种行为允许操作继续执行,但不保证数据完整性。
当MySQL数据库设置为 严格模式(STRICT_TRANS_TABLES 或 STRICT_ALL_TABLES) 时,如果尝试插入或更新超过设定长度的数据,将会导致错误,并阻止该事务进行。这保证了数据的完整性,因为不允许存储部分数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。