爲什麽mysql會自動進行數據類型轉換

2019-01-20 17:22:00
CJL
原創
3062

  前些天碰到一箇問題,當使用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


最好還是嚴格模式,防止意想不到的數據轉換,代碼盡量嚴密。

發錶評論
評論通過審核後顯示。
流量統計