2016-04-18 14 views
1

のデフォルトNULL値の設定に失敗しましたは、私はすでにテーブル、簡単な例を持って列

ALTER TABLE t ALTER COLUMN c SET DEFAULT NULL; 

が、私はエラーが発生しました "エラーコード:1067. 'c'のデフォルト値が無効です。 クエリーは公式のドキュメントに準拠しているので、本当に奇妙に見えます。

私もしようとした:

ALTER TABLE t ALTER COLUMN c DROP DEFAULT; 

と、それは 'SET DEFAULT NULL' クエリを作るためにした後、同じエラーが発生しました。 これは、そのクエリのような、面白い:エラーなしで実行

ALTER TABLE t ALTER COLUMN c SET DEFAULT 1; 

が、私はそれを使用して私の場合はNULLに列のデフォルト値を変更することが可能であることを、知っている:

ALTER TABLE t MODIFY COLUMN c INT NULL; 

しかし、このクエリは、大きなテーブルで本当に遅いです(それは「SETようなクエリよりも、はるかに遅いですDEFAULT 1 ')

したがって、デフォルト値をNULLに変更するにはどうすればよいですか?

「MODIFY COLUMN」コマンドによってオーバーヘッドが発生することはありません。

詳細:MySQL x64バージョン5.7.10、Win8。 MySQL Workbenchを使用してテストされています。

+0

になりますようにする唯一の方法MySQLでのデータ型の一部でありますデフォルトはNULLです。 Nullableに列を変更することなく、NULLに設定することはできません。Nullableにすると、この列に値を指定せずに新しいレコードを追加すると、デフォルトでNULLになるはずです。 – ydoow

答えて

1

NOT NULLとして列を作成すると、CONSTRAINTが作成されます。その列に入力された値はNULLになることはないと宣言します。

デフォルト値のNULL(NULLに設定すると、NULLはINSERT中に値が存在しません)は無効なデータを作成します。悲しいことにnull値を許可するよう

は、列NULL可能あなたがNULL可能でない列「C」を使用してテーブルを作成しているので、あなたが作ることができない

ALTER TABLE t MODIFY COLUMN c INT NULL; 
関連する問題