0

MySQL 5.1.48 データベースには、NOT NULL 列 'name' を持つテーブルがあります。列の値を に更新すると、NULL(MySQL Query Browser を使用して) 黄色の感嘆符付きのエラーが報告され、行が更新されます (!)。行には空の文字列が含まれ、灰色の NULL インジケーターは表示されません。

これは特定の MySQL バージョンのバグですか? または、制約チェックを魔法のようにオンにすることはできますか?

4

2 に答える 2

1

MySQL には複数のSQL モードがあり、その動作は驚くべきものです。あなたが設定したモードでは、null ではないと認識されるため、代わりにデフォルト値を提供します。

SQL モードに「TRADITIONAL」を追加すると、期待どおりに更新が中止されます。ANSI_QUOTES と STRICT_ALL_TABLES を適切に動作させたい場合は、それらにも関心があるかもしれませんが、厳密にしすぎると、MySQL バックエンドを対象として書かれた多くのコードが失敗します。

于 2011-11-08T10:18:35.727 に答える
1

リファレンスから -厳密モードを使用していない場合、NOT NULL 列に NULL を挿入したり、数値列に大きすぎる数値を挿入したりするなど、「正しくない」値を列に挿入すると、MySQL はその列を設定します。エラーを生成する代わりに、「可能な限り最高の値」にします。...文字列の場合、MySQL は空の文字列、または列に格納できる限り多くの文字列を格納します。

無効なデータに対する制約

于 2011-11-08T10:27:23.240 に答える