ข้อผิดพลาด SQL 1215 ไม่สามารถเพิ่มคีย์ต่างประเทศได้

ฉันไม่สามารถเพิ่มคีย์ต่างประเทศแบบธรรมดาลงในตารางของฉันได้ ก่อนหน้านี้ฉันสามารถเพิ่มคีย์ต่างประเทศได้แต่เฉพาะประเภท INT หรือ BIGINT เท่านั้น ฉันกำลังพยายามทำให้สิ่งนี้เป็นประเภท VARCHAR และได้รับข้อผิดพลาด 1215 พร้อมคำอธิบายที่ไม่สามารถเพิ่มข้อจำกัดของคีย์ต่างประเทศได้

คำสั่งที่ทำให้เกิดความล้มเหลว:

 ALTER TABLE `TradingAccount` 
 ADD CONSTRAINT `email`
   FOREIGN KEY (`owner_id`)
   REFERENCES `User` (`email`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION;

ทั้ง Owner_id และอีเมลเป็นประเภทข้อมูล VARCHAR(255)

ฉันใช้ MySQL Workbench และรู้สึกว่ามีการกำหนดค่าผิดพลาดซึ่งทำให้ฉันใช้ varchar สำหรับข้อจำกัดของคีย์ต่างประเทศได้ ฉันจำเป็นต้องตั้งค่า mysqlworkbench เพื่อใช้ INNODB หรือไม่ หรือเป็นค่าเริ่มต้น

ความช่วยเหลือใด ๆ จะดีมากไชโย


person Community    schedule 31.08.2017    source แหล่งที่มา
comment
ประเภทข้อมูลจะต้องเหมือนกัน ดังนั้นคุณจะต้องอ้างอิง varchar ไปยัง varchar (ซึ่งรหัสเจ้าของอาจจะไม่ใช่)   -  person Solarflare    schedule 31.08.2017
comment
Owner_id และอีเมลเป็นประเภท varchar(255) ทั้งคู่   -  person    schedule 31.08.2017
comment
คุณสามารถเพิ่มคำอธิบายตารางของทั้งสองตาราง (show create table user, show create table TradingAccount ได้หรือไม่ หากต้องการ คุณสามารถลบคอลัมน์ที่ไม่ได้ใช้ทั้งหมดได้ แต่ต้องทิ้งดัชนี/คีย์ทุกรายการไว้ใน User (คุณอาจไม่มีดัชนีใน email ที่นั่น)   -  person Solarflare    schedule 31.08.2017


คำตอบ (1)


ฉันเดาว่า TradingAccount.owner_id และ/หรือ OwnerMaster.owner_id ไม่ใช่ประเภทข้อมูลเดียวกันกับ TradingAccount.owner_id และ OwnerMaster.owner_id ทุกประการ

person Abhishek Sharma    schedule 31.08.2017
comment
ทั้งสองเป็น varchar (255) - person ; 31.08.2017