最近碰到的问题:
BLOB, TEXT, GEOMETRY or JSON column can't have a default value
这是 MySQL 严格模式下的限制
何为 MySQL 的严格模式
简单来说就是 MySQL 自身对数据进行严格的校验(格式、长度、类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下 MySQL 不会报错,同样如果定义了 char 或 varchar 类型的字段,当写入或更新的数据超过了定义的长度也不会报错。
如何开启
- 可以通过执行 SQL 语句来开启,但是只对当前连接有效,下面是 SQL 语句:
set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
- 通过修改 MySQL 的配置文件,在配置文件中查找 sql-mode,将此行修改成为:
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如果查找不到 sql-mode= 则在 [mysqld] 下加入即可,推荐第二种方法,可以一劳永逸。