本文介紹了MySQL中外部引用時出錯(錯誤3780)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在創(chuàng)建兩個表,我希望表b
中的personOne
列引用表a
中的person
列,但由于某種原因,它不起作用。
我有以下代碼作為示例:
create table a(
person varchar(20),
cost varchar(10) not Null
)character set latin1
collate latin1_general_ci;
create table b(
personOne varchar(20),
personTwo varChar(2) not null,
key person_index (personOne),
CONSTRAINT C FOREIGN KEY (personOne) references a(person)
) engine=InnoDB default charset=latin1;
它告訴我一個錯誤:
錯誤代碼:3780。外鍵約束‘C’中引用列‘Person’和被引用列‘Person’不兼容。
我試圖將引擎設(shè)置為InnoDB,但這不起作用。我對這個問題做了更多的研究,但想不出如何解決它。
推薦答案
這兩列必須具有相同的排序規(guī)則。我猜您的表b
正在使用MySQL舊版本的默認(rèn)排序規(guī)則,即latin1_swedish_ci
。
您可能想要查看此外鍵清單:https://stackoverflow.com/a/4673775/20860
我建議最佳選擇是使用utf8mb4
和排序規(guī)則utf8mb4
和排序規(guī)則utf8mb4_unicode_520_ci
聲明a
和b
表,如果您的MySQL版本足夠新以支持它。
這篇關(guān)于MySQL中外部引用時出錯(錯誤3780)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,