您好,登錄后才能下訂單哦!
本篇內容主要講解“mysql錯誤1022如何解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“mysql錯誤1022如何解決”吧!
mysql錯誤1022是外鍵名稱重復導致的,其解決辦法:1、通過“select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='...'”命令查找重復外鍵名稱;2、將外鍵名重新命名即可。
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錯誤1022如何解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。