解决BLOB, TEXT, GEOMETRY or JSON column ‘description’ can’t have a default value报错问题

背景:今天在跑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"