爲什麽mysql會自動進行數據類型轉換
- 2019-01-20 17:22:00
- CJL 原創
- 3366
前些天碰到一箇問題,當使用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
最好還是嚴格模式,防止意想不到的數據轉換,代碼盡量嚴密。
發錶評論