gpt4 book ai didi

mysql - MySQL 5.5.9 的奇怪外键问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:44:47 25 4
gpt4 key购买 nike

我在使用外键时遇到了一个相当奇怪的问题,即它没有按预期工作:

ALTER TABLE contact_contactlist 
ADD FOREIGN KEY (contact_id) REFERENCES contacts(id) ON DELETE CASCADE;

ALTER TABLE contact_contactlist
ADD FOREIGN KEY (contactlist_id) REFERENCES contactLists(id) ON DELETE CASCADE;

ALTER TABLE contactLists
ADD FOREIGN KEY (owner_id) REFERENCES serviceAccounts(id);

(由 Doctrine 2 自动生成)

然而,这完美地工作:

ALTER TABLE `contact_contactlist`
ADD CONSTRAINT `contact_contactlist_ibfk_5`
FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `contact_contactlist_ibfk_6`
FOREIGN KEY (`contactlist_id`) REFERENCES `contactLists` (`id`) ON DELETE CASCADE;
ALTER TABLE `contactLists`
ADD CONSTRAINT `contactlists_ibfk_1`
FOREIGN KEY (`owner_id`) REFERENCES `serviceAccounts` (`id`);

(上面相同 key 的 phpMyAdmin 导出)

问题本身表现为,如果键是用第一个 block 中的 SQL 定义的,MySQL 将不允许我向表中插入任何内容,提示引用完整性(即使引用的条目存在),但如果我使用第二个 block 中的 SQL 设置键。

我知道我可以使用后一个关键定义 SQL“继续并快乐”,但我更愿意以某种方式坚持使用 Doctrine 生成的 SQL,因为我仍处于开发初期并且模型会经常更改(因此两步手动 key 修复会变得相当烦人)。

编辑

这是创建语句

CREATE TABLE contact_contactlist (
contact_id BIGINT NOT NULL,
contactlist_id BIGINT NOT NULL,
INDEX contact_contactlist_contact_id_idx (contact_id),
INDEX contact_contactlist_contactlist_id_idx (contactlist_id),
PRIMARY KEY(contact_id, contactlist_id))
ENGINE = InnoDB;

CREATE TABLE contactLists (
id BIGINT AUTO_INCREMENT NOT NULL,
owner_id INT DEFAULT NULL,
name VARCHAR(255) NOT NULL,
INDEX contactLists_owner_id_idx (owner_id),
PRIMARY KEY(id))
ENGINE = InnoDB;

最佳答案

如果您使用的是 Mac OS X,您可能会遇到 MySQL 中的错误:
MySQL 5.5 foreign key constraint fails when foreign key exists

关于mysql - MySQL 5.5.9 的奇怪外键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com