MySQL厳格モードsql_mode


私たちはできるだけプログラムを書くときにデータベースに挿入されたデータを制御し、データベースでデータの間違いを判断しないようにしていますが、便利さのためにデータベース自体のフォールトトレランス能力が必要になることがあります.例:
 
次のデータテーブルを作成します.
CREATE TABLE `book` (
  `id` int(11) default NULL,
  `num` int(11) unsigned default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
 
insert into bookvalues(1,0),(2,0)
 

update book set num='abc'を実行すると、厳格なモードが有効になっていないため、エラーは発生しません.だから
先にset sql_を実行mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
その後update book set num='abc'を実行すると、データベースが間違っています.
 
一労永逸したいなら、データベースプロファイルmyを直接作成します.iniの関連パラメータは
# Set the SQL mode to strict sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"