我尝试添加外键:
CREATE TABLE `invoices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
` name` varchar(255) NOT NULL,
`code_text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `leads` (
`lead_id` int(11) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`lead_id`)
);
CREATE TABLE `leads_invoices` (
leads_invoice_id int(11) AUTO_INCREMENT NOT NULL,
invoice_id int(11) NOT NULL,
lead_id_i int(11) NOT NULL,
PRIMARY KEY(leads_invoice_id),
FOREIGN KEY (invoice_id) REFERENCES invoices(id),
FOREIGN KEY (lead_id_i) REFERENCES leads(lead_id)
ON UPDATE CASCADE
ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8
但是我的 lead_id_i key 出错了:
Can't create table
crm_test
.leads_invoices
(errno: 150 "Foreign key constraint is incorrectly formed")
我检查了所有类型和表格,似乎它们是正确的.. 我怎么解决这个问题?希望你能帮助我。谢谢!
最佳答案
您必须将 ENGINE=InnoDB DEFAULT CHARSET=utf8
添加到 leads 表
CREATE TABLE `leads` (
`lead_id` int(11) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`lead_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
因为如果要加外键,两个表必须有相同的引擎
关于mysql - 无法添加外键 MySQL :errno 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938496/