对于数据库一直以来都是一路next安装,安装了之后就使用,很少对其进行什么配置,估计大部分开发人员都是这样,过分依赖DBA。在最近的项目中,由于产品已经在线。因为遇到了开发环境和在线系统数据库配置不一样的问题,并导致了很多麻烦。
在开发过程中发现了两个问题:
1、在线系统对于字符长度超出规定的字段进行自动截取,而开发环境中数据库提示错误。
2、在线系统对于非空字段的空值插入自动忽略,而开发环境中报错。
对于这两个问题,一路跟踪到系统使用的框架原码日志部分,都没有找出问题所在,纠结中想到会不会是数据库配置的问题?于是上网查找,看到有关mysql sql mode的设置。于是对比开发环境和在线系统的设置发现,再现系统地sql mode设置为空。
于是更改开发环境的sql mode设置,于是终于统一了。
至于不设置sql mode是否还有其他功能在内,笔者还没有深入探讨,上面两项也可以说是魔术了。但是,个人认为,使用这种魔术简化了开发中的错误处理,却让系统的友好性降低,同时也大大降低了系统纠错能力。不值得鼓励。