2013-07-31 20 views
0

我需要对MySQL INNODB表进行一些模式更改(将主键列从INT更改为BIGINT)......似乎必须删除主键。 。但如果我尝试:无法更改或删除MySQL中的表

ALTER TABLE `myschema`.`mytable` DROP PRIMARY KEY 

我得到:

错误1025:错误的重命名 '\ MYSCHEMA#SQL-1344_36' 到(错误:150)' \ MYSCHEMA \ mytable的。”

我可以负担掉整个表并重新创建它(小表只有几个数据行); 但是如果我尝试:

drop table `myschema`.`mytable` 

我得到:

错误1217:不能删除或更新父行,外键约束失败

如果我做的:

use INFORMATION_SCHEMA; 
select * from KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'mytable'; 

我得到零行返回,表明有一些其他依赖没有透露通过KEY_COLUMN_USAGE

我宁愿不放弃整个模式(而不必重新加载所有数据)...

什么可以阻止我做我想要的模式更改?我怎么能识别它,以及我可以采取哪些纠正措施?

+0

只是改变了列应该工作,对不对? http://sqlfiddle.com/#!2/b531c –

+0

哇......只是尝试了ALTER列来改变数据类型,它的工作。我确定我以前曾尝试过相同的错误结果。 – Zenilogix

+0

它仍然让我不能放弃关键列。我正在对其他表进行类似的更改,并且除了一个表上的所有主键都可以工作。 – Zenilogix

回答

2
SET FOREIGN_KEY_CHECKS=0 

放下你的表,并再次将其设置为1