为什么mysql会自动进行数据类型转换

2019-01-20 17:22:00
CJL
原创
3094

  前些天碰到一个问题,当使用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


最好还是严格模式,防止意想不到的数据转换,代码尽量严密。

发表评论
评论通过审核后显示。
流量统计