のデフォルト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を使用してテストされています。
になりますようにする唯一の方法MySQLでのデータ型の一部でありますデフォルトはNULLです。 Nullableに列を変更することなく、NULLに設定することはできません。Nullableにすると、この列に値を指定せずに新しいレコードを追加すると、デフォルトでNULLになるはずです。 – ydoow