为什么mysql会自动进行数据类型转换
- 2019-01-20 17:22:00
- CJL 原创
- 3368
前些天碰到一个问题,当使用id去查询数据的时候,因前端数据错误ID拼接成了字符串,本来是21324 数字形式的ID成了 12345share
但是在主库依然可以查到正确数据,从库就不可以。
从代码排查到数据库,发现主库执行sql的时候可以查到数据,从库不可以。查询sql_mode发现主库使用的宽松模式,从库使用的严格模式,把主库修改为严格模式后就都查询不到了。在这个过程中还发现id格式错误的时候在phpstorm的客户端里无法查询数据,但是在服务器命令行下却可以,其实是因为phpstorm客户端连接的时候会修改session的sqlmode改为严格模式。
宽松模式下msql会根据字段类型对不符合格式的数据自动进行转换。
sql_mode可以在my.ini中设置。
sql_mode 设置方式:http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html
sql_mode 解释:https://blog.csdn.net/wulantian/article/details/8905573
最好还是严格模式,防止意想不到的数据转换,代码尽量严密。
发表评论