Как изменить столбец MySQL, чтобы разрешить NULL? - PullRequest
355 голосов
/ 17 октября 2008

MySQL 5.0.45

Каков синтаксис для изменения таблицы, чтобы столбец мог иметь значение NULL, альтернативно, что не так с этим:

ALTER mytable MODIFY mycolumn varchar(255) null;

Я интерпретировал руководство, как просто запустив вышеизложенное, и оно воссоздаст столбец, на этот раз допустив ноль. Сервер говорит мне, что у меня есть синтаксические ошибки. Я просто не вижу их.

Ответы [ 6 ]

533 голосов
/ 17 октября 2008

Вы хотите следующее:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

Столбцы обнуляются по умолчанию. Пока столбец не объявлен UNIQUE или NOT NULL, проблем не должно быть.

198 голосов
/ 17 октября 2008

Ваша синтаксическая ошибка вызвана отсутствующей "таблицей" в запросе

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
25 голосов
/ 24 ноября 2011

Мое решение:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

Например:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
7 голосов
/ 02 сентября 2009

При некоторых обстоятельствах (если вы получаете «ОШИБКА 1064 (42000): у вас есть ошибка в синтаксисе SQL; ...»), вам нужно сделать

ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);
2 голосов
/ 20 апреля 2019

Мое решение такое же, как @Krishnrohit:

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

У меня фактически был столбец, установленный как NOT NULL, но в приведенном выше запросе он был изменен на NULL.

P.S. Я знаю это старый поток, но никто, кажется, не признает, что CHANGE также правильно.

0 голосов
/ 12 августа 2015

Использование: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...