首頁 >資料庫 >mysql教程 >mysql錯誤1022怎麼辦

mysql錯誤1022怎麼辦

藏色散人
藏色散人原創
2023-02-16 09:43:172375瀏覽

mysql錯誤1022是外鍵名稱重複導致的,其解決方法:1、透過「select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where CONSTRAINT_NAME='...'」指令找出重複外鍵名稱;2、將重複外鍵名稱;2、將外鍵名重新命名即可。

mysql錯誤1022怎麼辦

本教學操作環境:Windows10系統、MySQL5.7版本、Dell G3電腦。

mysql錯誤1022怎麼辦?

mysql報錯Error Code: 1022. Can't write; duplicate key in table `xxx`

說明:此錯誤是外鍵名稱重複了

#找出重複外鍵名稱,哪裡被用到了,sql如下:

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where CONSTRAINT_NAME='重复的外键名称'

如果沒問題,則重新命名即可。

相關拓展:

1 外鍵的定義

外鍵是某個表中的一列,它包含在另一個表的主鍵中。

外鍵也是索引的一種,是透過一張表中的一列指向另一張表中的主鍵,來對兩個表進行關聯。

一張表可以有一個外鍵,也可以存在多個外鍵,與多張表進行關聯。

2 外鍵的作用

外鍵的主要功能是保證資料的一致性和完整性,並且減少資料冗餘。

主要體現在以下兩個方面:

  • 阻止執行

#從表插入新行,其外鍵值不是主表的主鍵值便阻止插入。

從表格修改外鍵值,新值不是主表的主鍵值便阻止修改。

主表刪除行,其主鍵值在從表裡存在便阻止刪除(要想刪除,必須先刪除從表的相關行)。

主表修改主鍵值,舊值在從表裡存在便阻止修改(要想修改,必須先刪除從表的相關行)。

  • 級聯執行

主表刪除行,連帶從表的相關行一起刪除。

主表修改主鍵值,連帶從表相關行的外鍵值一起修改。

3 外鍵建立限制

父表必須已經存在於資料庫中,或是目前正在建立的表。

如果是後一種情況,則父表與子表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。

必須為父表定義主鍵。

外鍵中列的數目必須和父表的主鍵中列的數目相同。

兩個表必須是 InnoDB 表,MyISAM 表暫時不支援外鍵。

外鍵列必須建立了索引,MySQL 4.1.2 以後的版本在建立外鍵時會自動建立索引,但如果在較早的版本則需要明確建立。

外鍵關係的兩個表的列必須是資料型別相似,也就是可以互相轉換型別的列,例如 int 和tinyint 可以,而 int 和 char 則不可以。

推薦學習:《MySQL影片教學

以上是mysql錯誤1022怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn