2015-01-11 36 views
0

我试图从column _id删除AUTO_INCREMENT的MySQL数据库。但是,这种columnprimary key为表,当我使用这个命令不能alter table来删除AUTO_INCREMENT由于外键

ALTER TABLE Profile 
MODIFY _id INT PRIMARY KEY NOT NULL 

我得到一个错误,告诉我,我不能这样做,因为有其他表它引用primary key

我的问题是:有没有办法解决这个问题?

+1

从其他表中删除外键,更改您的表并重新创建forreign键。 – Jens

+4

SET FOREIGN_KEY_CHECKS = 0当你完成时启用它但是主键和自动增量几乎是同义词你为什么要这样做? – Mihai

+0

@Mihai:这是一个可能的解决方案,我有这个问题我有 http://stackoverflow.com/questions/27887585/insert-a-specific-id-into-auto-incremented-field-in-mysql-with -entity-framework –

回答

1

可选项:

1.在进行此更改之前删除关系。

2.在进行此更改之前删除其他表。

3.Alter关系(表)与像更新/级联(不知道这是否会帮助)

+0

有没有办法在不丢失相关表的数据的情况下删除关系? –

+1

我最终使用Mihai的解决方案,将外键检查设置为零,然后在插入想要的值后返回到一个 –

0

最简单和最快的方式财产以后如下:

set foreign_key_checks = 0; 
alter table Profile change column _id _id INT NOT NULL; 
set foreign_key_checks = 1; 

发现here