mariadb 從 10.0 升級 10.2 的問題 SQL_MODE

上禮拜手養把主機的 SQL 從 mariadb 10.0 升級到 10.2

本來以為沒什麼問題的

結果過沒多久馬上就有客戶打電話來了

一堆東西都不正常

IMG_1433

結果查了一下

發現是 insert 都失效

假設你有 5 個欄位

你只塞4個

少塞的那個欄位不是 key

會被 SQL Server 檔掉

這要改 code 是不難

但我整台主機的 code 都要改

要改到何時

當下也無法把 SQL 回復成 10.0

只好找其他方法了

後來發現 10.0 升級 10.2 會加入一個叫做 SQL_MODE 的設定

會多這些設定

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

其中會讓我無法 insert 的應該是 STRICT_TRANS_TABLES

就是嚴格的模式

只要有少的欄位 沒有 default 值

都會被檔下來

把這個拔掉就沒事了

可以到 /etc/my.cnf 修改 SQL_MODE 的設定

改成你要的數值就ok

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *