mysqlではデフォルトではNOT NULL制約に明示的に値を与えない場合、勝手に空文字や0といった値を勝手に入れちゃう。 例えば CREATE TABLE users ( id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL ); なテーブルに対して INSERT INTO users(id) VALUES(1); とかしたらエラーにならずid = 1, username = ''みたいなレコードが作られちゃう。 んで、これを許可しないようにするのが5.0.2以上でサポートされてるSTRICT_ALL_TABLESモード。知らんかったです。 SET sql_mode = 'STRICT_ALL_TABLES'; することによって ERROR 1146 (42S02): Table 'u