gpt4 book ai didi

mysql - 主键和外键冲突

转载 作者:行者123 更新时间:2023-11-29 08:51:37 27 4
gpt4 key购买 nike

此插入在我的数据库上失败 -

insert into tig_pairs (pkey, pval, uid) select 'schema-version', '4.0', uid from tig_users where (sha1_user_id = sha1(lower('db-properties')));
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`tigasedb`.`tig_pairs`, CONSTRAINT `tig_pairs_constr_2` FOREIGN KEY (`nid`) REFERENCES `tig_nodes` (`nid`))

表定义的位置:

create table if not exists tig_pairs (
nid int unsigned,
uid int unsigned NOT NULL,

pkey varchar(255) NOT NULL,
pval mediumtext,

PRIMARY KEY (nid, pkey), -- ***
key pkey (pkey),
key uid (uid),
key nid (nid),
constraint tig_pairs_constr_1 foreign key (uid) references tig_users (uid),
constraint tig_pairs_constr_2 foreign key (nid) references tig_nodes (nid)
)
ENGINE=InnoDB default character set utf8 ROW_FORMAT=DYNAMIC;

create table if not exists tig_nodes (
nid int unsigned NOT NULL auto_increment,
parent_nid int unsigned,
uid int unsigned NOT NULL,

node varchar(255) NOT NULL,

primary key (nid),
unique key tnode (parent_nid, uid, node),
key node (node),
key uid (uid),
key parent_nid (parent_nid),
constraint tig_nodes_constr foreign key (uid) references tig_users (uid)
)
ENGINE=InnoDB default character set utf8 ROW_FORMAT=DYNAMIC;

PRIMARY KEY (nid, pkey), -- *** 被省略,然后我的查询就顺利进行了。主键和令人不安的外键约束之间是否存在冲突?我怎样才能避免它?主键必须留在那里:)

谢谢!

编辑:通过更改一行中的 tig_pairs 定义消除了错误:

nid int unsigned NOT NULL auto_increment,

最佳答案

您的 tig_pairs 表上有一个引用 tig_nodes 表的外部约束。但是,您没有将任何数据插入到 nid 字段中。引用的字段 tig_nodes.nid 不允许使用 NULL 值。由于这两个限制,您无法将 null 插入到 tig_pairsnid 字段中。

另请参阅此问题:MySQL foreign key to allow NULL?

编辑:另外,主键值决不允许为 NULL;因此,只要该主键中包含 nid,就不能将其设为 NULL。

关于mysql - 主键和外键冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052608/

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