如何向MySQL InnoDB表的主键添加列?

如何向MySQL InnoDB表的主键添加列?,mysql,primary-key,innodb,mysql-error-1025,Mysql,Primary Key,Innodb,Mysql Error 1025,我有桌子和吧台: create table foo(a int, b varchar(10), primary key (a)); create table bar(a int, c int, d int, primary key (a,c), foreign key(a) references foo(a)); 现在我有了一个新的列e,它需要参与bar的主键。我该怎么做?看起来我应该能够删

我有桌子和吧台:

create table foo(a int, b varchar(10), 
                 primary key (a));
create table bar(a int, c int, d int,
                 primary key (a,c),
                 foreign key(a) references foo(a));
现在我有了一个新的列
e
,它需要参与bar的主键。我该怎么做?看起来我应该能够删除主键,添加列,并创建一个新的主键,但是尝试删除主键会让我:

mysql> alter table bar drop primary key;
ERROR 1025 (HY000): Error on rename of './mydb/#sql-1e08_16a273' to './mydb/bar' (errno: 150)
只有包含外键列的主键才会出现这种情况。

这个问题可能会对您有所帮助


我猜您需要先删除外键,然后删除主键。

将e列添加到bar表,然后通过发出以下特定于MySQL的命令来更新主键:

ALTER TABLE bar DROP PRIMARY KEY, ADD PRIMARY KEY (a, c, e);