このようなSQL文はあり、
(ID、USER_NAME)値への挿入( ''、 'ABC')。
IDは、空の文字列を挿入するフィールドを表します。mysql5.6バージョンの実装では、このようなエラーが発生しました。Mysql5.1バージョンが正常に行うことができ、
死ぬために5.2と推定された後、MySQLの古いバージョンでは、データ型のNULL値をサポートすることができます。
なぜ空の文字列がnullを書き込むことはできません書きませんか?
これは、制約のMySQLのフィールドタイプであり、セットNOT NULL
NULLとNOT NULL修飾子は:
両方のフィールドが空(NULL)ことができるかどうかを指定するには、このNULLまたはNOT NULL修飾子を追加したり、各フィールドの後ろに(NOT NULL)データを記入しなければならないこと。それがされたため、指定したフィールドは、MySQLは(NULLがあると言うNULL)ヌルのフィールド値NOT NULLを挿入することが許可されていない場合は指定したフィールドのMySQLのデフォルトの場合は、NULLの修飾子である「規定します。」
NOT NULLは、フィールドが空にすることはできませんことを示し
、彼と彼のようなビジネスロジックやデータ構造に見えますがが、関係の人工集合でありながら
、そのようなあなたは、これらのレコードを読んで、これはあなたがいないだけで、それをしないことが非常に重要な属性であるとして、値を指定または空だけでなく、彼はフォーマットであるしましょう
。このような状況があることだけで、彼は彼が値を持たなければならないので、2つのテーブルを関連付けるために正しい値を持っていることだけで、別のテーブルの主キーフィールドで
ない方法プログラマがプログラムを変更することがなかったので、このフィールドを取り除くために。。。- - -
この問題は、通常のMySQL 5.xの上で発生します 私は、MySQLのNULL値の新しいバージョンは、デフォルトでMySQLをインストールする際に、厳密なSQLモードを有効に確認し削除するには、文句を言われることを確認の後ろに、mysql5.2.28を使用しています。あなたがインストールしている場合は、my.iniファイル、SQLモードで見て、SQL-モード=「STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION」のデフォルトは、再起動mysqlの後、SQL-モード=「NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION」にそれを修正しますことができます。
しばらく前にちょうどマニュアルを読むためMySQL5.0のSQLモードプラスの新しい関係との反応がある初めて。確かに十分な、作られた以下の変更がもはやプロンプトが表示されていません後。
my.iniファイルを変更します。
厳密にSQLモードを設定します。
SQL-モード=」STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION」
読みます:
厳密にSQLモードを設定します。
SQL-モード=「NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION」