Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何删除NOTNULL约束?_Mysql_Null_Constraints - Fatal编程技术网

Mysql 如何删除NOTNULL约束?

Mysql 如何删除NOTNULL约束?,mysql,null,constraints,Mysql,Null,Constraints,假设创建了一个表,如下所示: create table testTable ( colA int not null ) 如何删除NOTNULL约束?我在找一些类似于 ALTER TABLE testTable ALTER COLUMN colA DROP NOT NULL; 这就是我使用PostgreSQL时的样子。令我惊讶的是,据我所知,MySQL文档、Google和yes,甚至Stackoverflow(尽管有几十个或数百个与空相关的问题)似乎都没有导致一个简单的SQL语句来完成这项工作

假设创建了一个表,如下所示:

create table testTable ( colA int not null )
如何删除NOTNULL约束?我在找一些类似于

ALTER TABLE testTable ALTER COLUMN colA DROP NOT NULL;

这就是我使用PostgreSQL时的样子。令我惊讶的是,据我所知,MySQL文档、Google和yes,甚至Stackoverflow(尽管有几十个或数百个与空相关的问题)似乎都没有导致一个简单的SQL语句来完成这项工作。

在MySQL中,空性是数据类型的一部分,而不是约束。因此:

ALTER TABLE testTable MODIFY COLUMN colA int null; 

我想试试这样的

ALTER TABLE testTable MODIFY COLUMN colA int;

实际上,语法非常接近:

ALTER TABLE testTable CHANGE colA colA int null;
试一试

这对我有用

ALTER TABLE table_name
MODIFY COLUMN column_name VARCHAR(25) UNIQUE;

当您在Mysql workbench中修改表约束或数据类型时,它会显示完成请求所要执行的代码。 这是我从那个盒子里得到的问题

ALTER TABLE `table_name`.`column_name`  CHANGE COLUMN `column_name` `colunm_name`datatype NULL ;

但这里的问题是,您不能将主键设置为null,而是必须将其设置为唯一的。

这在postgres中对我很有效:

ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL;

alter table x alter column a int null
返回“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,在第1行[SQL State=42000,DB Errorcode=1064]中使用接近“int null”的正确语法。”我还尝试了
alter table testTable修改int默认null
alter table x alter column a int default null
:结果相同。我使用的是mysql 5.1。对不起,它是
modifycolumn
,而不是
ALTER
。编辑。出于某种原因,
alter table testTable modify col int default null
在我尝试时似乎不起作用:上面的语句实际上是正确的,尽管没有单引号(我正在删除它们以匹配有效的内容)。您能为您的答案提供更多的上下文吗?
ALTER TABLE `table_name`.`column_name`  CHANGE COLUMN `column_name` `colunm_name`datatype NULL ;
ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL;