无法修改MySQL表中的列
我有一个需求,其中我需要根据较低环境上的生产环境更改表结构。该表有一个多列主键(无法修改MySQL表中的列,mysql,sql,Mysql,Sql,我有一个需求,其中我需要根据较低环境上的生产环境更改表结构。该表有一个多列主键(md\u biobectId,projectid,md\u mapid),我想将列'md\u mapid'修改为varchar(50)默认为NULL从'md\u mapid'varchar(50)非NULL 运行查询时: 更改表格名称 修改列md_-mapidvarchar(50)默认为空它没有运行,我遇到以下错误: 错误代码:1171。主键的所有部分都不能为空;如果密钥中需要NULL,请改用UNIQUE 两个环境中
md\u biobectId
,projectid
,md\u mapid
),我想将列'md\u mapid'修改为varchar(50)默认为NULL从'md\u mapid'varchar(50)非NULL
运行查询时:
更改表格名称
修改列md_-mapid
varchar(50)默认为空它没有运行,我遇到以下错误:
错误代码:1171。主键的所有部分都不能为空;如果密钥中需要NULL,请改用UNIQUE
两个环境中的其他列结构为:
“md_BioObjectId”varchar(50)非空默认值“”
“projectid”varchar(50)不为空默认值“”
MySQL版本:5.7.21-log。您需要在不使用默认空值的情况下使用isse。md_mapid列是复合主键的一部分,不能设置为null
alter table table_name modify column md_mapid varchar(50)
这说明了确切的原因。可以使用单个列生成主键。您可以将这三列设置为唯一的,因为您试图做的是违反每个主键约束的规则。您能告诉我们为什么在主键中需要空值吗?