NULL을 허용하도록 MySQL 열을 어떻게 수정합니까?


396

MySQL 5.0.45

열이 null이되도록 테이블을 변경하는 구문은 무엇입니까?

ALTER mytable MODIFY mycolumn varchar(255) null;

위의 명령을 실행하는 것으로 매뉴얼을 해석했으며 이번에는 null을 허용하여 열을 다시 작성합니다. 서버에서 구문 오류가 있다고 알려줍니다. 나는 단지 그들을 보지 못한다.


열은 고유하지 않습니다.
zmf

답변:


600

다음을 원합니다 :

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

기본적으로 열은 널 입력 가능합니다. 열이 선언되지 않은 한 UNIQUE또는 NOT NULL문제가 없어야합니다.


14
는 IS 가장자리 경우가있어 TIMESTAMP당신의 MySQL 버전과 설정에 따라 유형이 될 수 NOT NULL지정 NULL@ConroyP에 의해 제안 더 정확는.
Matthew Buckett

1
이것은 나를 위해 작동하지 않았다! 열이 변경되지 않았습니다. 아마도 열이 사용 된 다른 테이블에 제약이 있었기 때문에 (널이 아닌 경우).
Rocologo

251

쿼리에서 "테이블"이 누락되어 구문 오류가 발생했습니다.

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;

26
이것은 실제로 정답입니다-NULL 절은 필요하지 않지만 제공하는 데 아무런 문제가 없습니다. ALTER TABLE 문에서 누락 된 TABLE은 실제 문제점이었습니다.
SamStephens

@SamStephens 및 Xofo : 1 차 및 2 차 ( "대체로") 질문이 있습니다. 이것은 2 차 질문에 대한 정답이며 허용되는 답변은 1 차 질문에 대한 정답입니다.
jdunk

@SamStephens 제공하는 데 아무런 문제 NULL가 없기 때문에이 답변이 허용되는 답변보다 더 "올바르지"않습니까? 기본적으로 열이 널 입력 가능하다는 것을 아는 것은 (허용 된 답변에 언급 된대로)이 특정 질문과 관련하여 도움이됩니다.
rybo111

OP는 왜 그들의 진술이 효과가 없는지 모릅니다. 이 답변은 이유를 설명합니다.
SamStephens

28

내 해결책 :

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

예를 들면 다음과 같습니다.

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;


3

내 솔루션은 @Krishnrohit과 같습니다.

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

실제로 열을 설정 NOT NULL했지만 위의 쿼리에서는로 변경되었습니다 NULL.

추신 : 나는 이것이 오래된 실을 알고 있지만 아무도 그 사실을 인정하지 않는 것 같습니다 CHANGE.


-5

사용하다: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);


18
귀하의 답변이 다른 답변 위에 추가 가치를 제공하는 것이 좋습니다. 이 경우 Daniel Spiewak이 이미 해당 솔루션을 게시 했으므로 귀하의 답변은 추가 가치를 제공하지 않습니다. 이전 답변이 도움이 되었으면 평판 이 충분 해지면 투표해야합니다.
Luís Cruz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.