大佬教程收集整理的这篇文章主要介绍了是什么导致这个sqlite外键不匹配?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下简化示例:
create table pipelines ( name varchar NOT NULL,owner VARCHAR NOT NULL,description VARCHAR,PRIMARY KEY (name,owner),FOREIGN KEY(owner) REFERENCES user (id) ); create table tasks ( id integer NOT NULL,title VARCHAR,pipeline VARCHAR,owner VARCHAR,primary key (id),FOREIGN KEY(pipelinE) REFERENCES pipelines (Name),FOREIGN KEY(owner) REFERENCES pipelines (owner) ); create table user ( id VARCHAR NOT NULL,name varchar,password VARCHAR,primary key (id) ); pragma foreign_keys=on; insert into user values ('wayne','',''); insert into pipelines values ('pipey','wayne',''); insert into tasks values (1,'Hello','pipey','wayne');
执行此代码时,它会失败:
$sqlite3 foo.sq3 '.read mismatch.sql' Error: near line 27: foreign key mismatch
通过我引用的问题列表:
>父表(用户)存在.
>存在父列(名称,所有者)
>父列实际上是主键(我原以为可能是原来的)
>子表引用父表中的所有主键列
那么世界上可能会导致这个错误呢?
在管道表中,名称和所有者列本身都不是唯一的.
我猜你真的想在tasks表中有一个两列的外键:
FOREIGN KEY(pipeline,owner) REFERENCES pipelines(name,owner)
以上是大佬教程为你收集整理的是什么导致这个sqlite外键不匹配?全部内容,希望文章能够帮你解决是什么导致这个sqlite外键不匹配?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。