2013-07-31 48 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