* 明明是 unsigned int 的欄位你卻可以儲存負數(-1)
* 明明限制 varchar 長度為 10 但卻可以輸入 11 長字串儲存時自動截斷字串(auto truncate)
"123456789012345" => "1234567890" (auto truncated & saved)
這是因為
MySQL 有二個設定
STRICT_ALL_TABLES - Behave more like the SQL standard and produce errors when data is out of range.
STRICT_TRANS_TABLES - Behave more like the SQL standard and produce errors when data is out of range, but only on transactional storage engines like InnoDB.
MySQL 5.6 後預設把這兩個設定 disable 了
解法就是到你的 MySQL 加入
[mysqld]
......
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
.....
再重開 server 即可
#service mysql restart
沒有留言:
張貼留言