web-dev-qa-db-ja.com

NULLを許可するようにMySQLカラムを変更するにはどうすればいいですか?

MySQL 5.0.45

列をnullにすることができるようにテーブルを変更するための構文は何でしょうか。

ALTER mytable MODIFY mycolumn varchar(255) null;

私はこのマニュアルを上記のコードを実行しただけであると解釈したため、列が再作成されることになりました。サーバーは私に構文上の誤りがあると言っています。私はそれらを見ません。

355
zmf

あなたは以下が欲しい:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

列はデフォルトではNULL可能です。列がUNIQUEまたはNOT NULLとして宣言されていない限り、問題はありません。

533
Daniel Spiewak

構文エラーは、クエリに "table"がないことが原因で発生します

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
198
ConroyP

私の解決策:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

例えば:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
25
Krishnrohit

状況によっては(「ERROR 1064(42000):SQL構文にエラーがあるので... ...」が表示される場合)、実行する必要があります。

ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);

私の解決策は@ Krishnrohitと同じです。

ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;

私は実際に列をNOT NULLに設定しましたが、上記のクエリではNULLに変更されました。

P.S私はこれが古いスレッドであることを知っていますが、CHANGEも正しいということを誰も認識していないようです。

2
Herman Heunis

列が二重の場合

      ALTER TABLE `tablename` CHANGE `column_name` `column_name` DOUBLE NULL; 
0
levis