我有一个需求,其中我需要根据较低环境上的生产环境来更改表结构。该表具有一个多列 PRIMARY KEY,例如({rails generate migration AddCompanyToGarment company:references
,md_biobjectid
,projectid
),我想将列'md_mapid'修改为varchar (50)来自'md_mapid'varchar(50)不为空的默认空值。
当我运行查询时:
更改表table_name
修改列md_mapid
varchar(50)DEFAULT NULL; ,该列不运行,并且出现以下错误:
错误代码:1171。PRIMARYKEY的所有部分都不能为NULL。如果键中需要NULL,请改用UNIQUE。
两个环境上的其他列结构是: 'md_biobjectid'varchar(50)NOT NULL DEFAULT''
'projectid'varchar(50)NOT NULL DEFAULT''
MySQL版本:5.7.21-log。
答案 0 :(得分:0)
您需要没有DEFAULT NULL
后缀的isse。 md_mapid列是复合主键的一部分,不能设置为null。
alter table table_name modify column md_mapid varchar(50)