背景:今天在跑migration的时候,有一个库建表失败,查询log显示:”BLOB, TEXT, GEOMETRY or JSON column ‘description’ can’t have a default value”,
解释:报错原因:blob,text等字段类型不能设置default ‘xxxx’默认值
好奇不同的实例,同样的sql语句,有的实例可以执行,有的不能.开始以为是5.7的特性,后来dba清空了sql_mode设置就好了.
总结:
上述报错的原因在于:
- MYSQL5.x是不允许BLOB/TEXT类型的字段拥有默认值的
- 由于mysql是在’strict mode’严格模式下工作的,如果改为非严格模式,上面的语句就可以执行成功
所以解决方案:
- mysql.配置文件注释sql-mode
- 重启mysql服务
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"