我想放棄我的表的外鍵,但一直到這個錯誤信息無法刪除外鍵
mysql> alter table customers drop foreign key customerid;
ERROR 1025 (HY000): Error on rename of '.\products\customers' to '.\products\#sql2-7ec-a3' (errno: 152)
mysql>
我想放棄我的表的外鍵,但一直到這個錯誤信息無法刪除外鍵
mysql> alter table customers drop foreign key customerid;
ERROR 1025 (HY000): Error on rename of '.\products\customers' to '.\products\#sql2-7ec-a3' (errno: 152)
mysql>
爲避免在嘗試刪除外鍵時發生此錯誤,請使用約束名稱而不是外鍵的列名。
當我試圖
mysql> ALTER TABLE mytable DROP PRIMARY KEY;
我誤差
ERROR 1025 (HY000): Error on rename of '.\database\#sql-454_3' to '.\database\mytable' (errno: 150).
我解決它使用:
mysql> ALTER TABLE mytable DROP PRIMARY KEY, ADD PRIMARY KEY (column1,column2,column3);
一些鏈接,這將幫助你。
link 2 [查找發佈者亞歷克斯·布魯姆在2008年11月7日下午5時09 &發佈海克特德爾加迪略於2011年1月21日上午4時57分]
爲了避免收到此錯誤,而試圖刪除外鍵,使用約束名而不是外鍵的列名
它看起來像是MySQL錯誤消息傳遞中的一個錯誤。 (http://bugs.mysql.com/bug.php?id=10333)
使用SHOW CREATE TABLE table_name
看到實際名稱外鍵的。它看起來像是在用外鍵名稱的錯誤拼寫生成查詢時,可能是mysql查詢瀏覽器問題。
它可以幫助我知道我的約束被創建爲INDEX,而不是FOREIGN KEY。然後我使用了「DROP INDEX」條款。謝謝。 –
解決方案描述here by Chris White爲我工作。
根本問題是MySQL創建一個索引和一個外鍵。兩者都必須刪除(外鍵首先與克里斯說的相反)。
show create table table_name;
SHOW CREATE TABLE `table_name`:
| table_name | CREATE TABLE `table_name` (
`id` int(20) unsigned NOT NULL auto_increment,
`key_column` smallint(5) unsigned default '1',
KEY `column_tablein_26440ee6` (`key_column`), <--- shows key name
CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`key_column`) REFERENCES <--- shows foreign key constraint name
`second_table` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
刪除外鍵約束:
ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
刪除鍵
ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
這爲我做。
您應該嘗試使用Fahim Parkar建議的外鍵名稱。事實上,這也不總是工作。
在我來說,我使用的
FOREIGN KEY `fk`(`col1`) REFERENCES `table2`(`col1`)
代碼通過創建添加FK。
該代碼的問題是它無效,應該拋出一些類型的語法錯誤,但它仍然添加了一個具有隨機名稱的外鍵。
當我添加了FK用正確的語法:
CONSTRAINT `fk` FOREIGN KEY (`col1`) REFERENCES `table2`(`col1`)
下面的代碼把它丟正確:
ALTER TABLE `table1` DROP FOREIGN KEY `fk`
所以這種錯誤可以如果您嘗試去除外來太發生鍵名稱無效。查看錶格屬性很重要
SHOW CREATE TABLE `table1`
並檢查外鍵名稱,如果您遇到此類錯誤。
這可能會幫助您瞭解 http://stackoverflow.com/questions/160233/what-does-mysql-error-1025-hy000-error-on-rename-of-foo-errorno-150-me – Imdad
@Imdad這個鏈接描述了另一個錯誤 - (errno:150) – Devart
試試這個。創建新表(沒有外鍵約束)。將數據複製到新表(使用語法INSERT INTO new_table SELECT * FROM old_table)刪除舊錶 – Imdad