在mysql中向一个字符串类型的字段插入超过定义长度的字符串,没有自动截取,而是直接报错?

mysql是Mac版的 ,在表class(下图1)中插入数据长度超过表中定义的长度直接报错,而不是像windows中自动解决。

表结构

图片描述

相关代码

insert into class(name) values('0123456789a');

执行结果:
图片描述

怎么跟Windows中不一样???

阅读 2.9k
3 个回答

sql_mode设置不一样导致的。
执行show variables like 'sql_mode';在mac上应该是显示包含STRICT_TRANS_TABLES严格模式,在windows上应该是显示包含ANSI宽松模式。
具体的sql_mode查看传送门

要想超过长度自动截取插入,则设置sql_mode=ANSI;

Mysql版本不一样,默认处理行为不一样

MySQL 5.5.*

clipboard.png

MySQL 5.7.*

clipboard.png

get了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题