这个问题在这里已经有答案了:
多列主键中的空值(5个答案)
两年前关门了。
我有一个需求,我需要根据生产环境在较低的环境中更改表结构。该表有一个多列主键( md_biobjectid
, projectid
, md_mapid
),我想将“md\u mapid”列从“md\u mapid”varchar(50)not null修改为varchar(50)default null。
运行查询时:alter table table\u name modify column md_mapid
varchar(50)默认为空;它没有运行,我得到以下错误:错误代码:1171。主键的所有部分都不能为空;如果需要在键中使用null,请改用unique。
两个环境中的其他列结构都是:“md\u biobjectid”varchar(50)not null default“”
“projectid”varchar(50)不为空默认值“”
mysql版本:5.7.21-log。
1条答案
按热度按时间j5fpnvbx1#
你需要在没有
DEFAULT NULL
后缀。md\u mapid列是复合主键的一部分,不能设置为null。