自動は、空の文字列データ型のフィールドには0が指定されて充填されているのmysql

このような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」

ここに画像を挿入説明

公開された10元の記事 ウォンの賞賛0 ビュー139

おすすめ

転載: blog.csdn.net/qq_32620027/article/details/103861642