亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

錯誤代碼:1005。無法創建表'...'(錯誤號:150)

錯誤代碼:1005。無法創建表'...'(錯誤號:150)

慕斯王 2019-09-20 16:52:21
我在Internet上搜索了這個問題的解決方案,并檢查了Stack Overflow問題,但沒有一個解決方案適合我的情況。我想從表sira_no到metal_kod創建一個外鍵。ALTER TABLE sira_no    ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)    REFERENCES metal_kod(METAL_KODU)    ON DELETE SET NULL    ON UPDATE SET NULL ;該腳本返回:Error Code: 1005. Can't create table 'ebs.#sql-f48_1a3' (errno: 150)我嘗試在引用的表中添加索引:CREATE INDEX METAL_KODU_INDEX ON metal_kod (METAL_KODU);我在兩個表(charset和collation)上檢查了METAL_KODU,但我找不到解決這個問題的方法。我該如何解決這個問題?這是metal_kod表:METAL_KODU    varchar(4)    NO    PRIDURUM    bit(1)    NOMETAL_ISMI    varchar(30)    NOAYAR_YOGUNLUK    smallint(6)    YES        100
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

錯誤代碼:1005 - 代碼中的主鍵引用錯誤

通常是由于引用的外鍵字段不存在??赡苁悄阌幸粋€拼寫錯誤,或者檢查它應該是相同的,或者是字段類型不匹配。外鍵鏈接字段必須與定義完全匹配。

一些已知的原因可能是:

  1. 兩個關鍵字段類型和/或大小不完全匹配。例如,如果一個是INT(10)關鍵字段需要INT(10)也是,而不是INT(11)TINYINT。您可能需要確認字段大小,SHOW CREATE TABLE因為查詢瀏覽器有時會直觀地顯示INTEGER兩者INT(10)INT(11)。你還應該檢查一個不是SIGNED,另一個是UNSIGNED。它們都需要完全相同。

  2. 您嘗試引用的關鍵字段之一沒有索引和/或不是主鍵。如果關系中的某個字段不是主鍵,則必須為該字段創建索引。

  3. 外鍵名稱是已存在鍵的副本。檢查外鍵的名稱在數據庫中是否唯一。只需在密鑰名稱的末尾添加一些隨機字符即可對其進行測試。

  4. 您的一個或兩個表是一個MyISAM表。為了使用外鍵,表必須都是InnoDB。(實際上,如果兩個表都是,MyISAM那么您將不會收到錯誤消息 - 它只是不會創建密鑰。)在查詢瀏覽器中,您可以指定表類型。

  5. 您已指定級聯ON DELETE SET NULL,但相關鍵字段設置為NOT NULL。您可以通過更改級聯或將字段設置為允許NULL值來解決此問題。

  6. 確保Charset和Collate選項在表級別以及關鍵列的單個字段級別都相同。

  7. 外鍵列上有一個默認值(即默認值= 0)

  8. 關系中的一個字段是組合(復合)鍵的一部分,并且沒有自己的單獨索引。即使該字段具有索引作為復合鍵的一部分,您也必須僅為該鍵字段創建單獨的索引,以便在約束中使用它。

  9. 您的ALTER語句中存在語法錯誤,或者您在關系中輸入了一個字段名稱

  10. 外鍵的名稱超過64個字符的最大長度。


查看完整回答
反對 回復 2019-09-20
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

將數據庫從一個服務器導出到另一個服務器時,也可能發生這種情況,默認情況下,這些表按字母順序列出。

因此,您的第一個表可能具有另一個尚未創建的表的外鍵。在這種情況下,請禁用foreign_key_checks并創建數據庫。


只需將以下內容添加到腳本中:


SET FOREIGN_KEY_CHECKS=0;

它應該工作。


查看完整回答
反對 回復 2019-09-20
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

有時它是由于主表被刪除(可能是通過禁用foreign_key_checks),但外鍵CONSTRAINT仍然存在于其他表中。在我的情況下,我放棄了桌子并嘗試重新創建它,但它給我帶來了同樣的錯誤。

因此,嘗試從所有表中刪除所有外鍵CONSTRAINT(如果有),然后更新或創建表。


查看完整回答
反對 回復 2019-09-20
  • 3 回答
  • 0 關注
  • 886 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號