是什么导致此sqlite外键不匹配?

韦恩·沃纳(Wayne Werner)

我已经检查了这个问题,并以为我找到了答案-但后来对我来说看起来不对。

我有以下简化的示例:

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

通过问题清单,我列举了:

  • 父表(用户)存在。
  • 父列(名称,所有者)存在
  • 父列实际上是主键(我认为可能原来是它)
  • 子表引用父表中的所有主键列

那么到底是什么导致了此错误?

CL。

文档说:

通常,外键约束的父键是父表的主键。如果它们不是主键,则父键列必须共同受UNIQUE约束或具有UNIQUE索引。

pipelines表中,“name和”或“owner列”都不是唯一的。

我猜您实际上想在tasks表中有一个两列的外键

FOREIGN KEY(pipeline, owner) REFERENCES pipelines(name, owner)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么导致sqlite数据库中的外键不匹配错误

来自分类Dev

外键不匹配SQLite

来自分类Dev

插入时外键不匹配(SQLite)

来自分类Dev

是什么导致此SQLite CursorWindowAllocationException?

来自分类Dev

是什么导致数组类型不匹配?

来自分类Dev

外键不匹配

来自分类Dev

SQLite3-BLOB上的外键不匹配

来自分类Dev

sqlite中尝试将rowid用作外键时出现外键不匹配错误

来自分类Dev

为什么会出现外键不匹配?

来自分类Dev

是什么导致这些数组值不匹配?

来自分类Dev

是什么导致此错误?

来自分类Dev

是什么导致此TypeError?

来自分类Dev

SqliteException:SQLite错误1:“外键不匹配-引用“电影”的“出租””

来自分类Dev

是什么导致此正则表达式匹配所有内容?

来自分类Dev

外键不匹配-引用“挑战”的“注释”

来自分类Dev

是什么导致此随机空白?

来自分类Dev

是什么导致此Maven / JBehave错误?

来自分类Dev

是什么导致此NullPointer异常?

来自分类Dev

是什么导致此modx xpdo错误?

来自分类Dev

是什么导致此modx错误?

来自分类Dev

是什么导致此Apache 401错误?

来自分类Dev

为什么此 JavaScript 对象键与同名字符串不匹配?

来自分类Dev

Django的。为什么我的外键与父主键的数据不匹配

来自分类Dev

尝试在 Django 中保存模型表单时,为什么会出现“外键不匹配”?

来自分类Dev

是什么导致MongoDB / GridFS MD5哈希不匹配?

来自分类Dev

为什么此分配的类型不匹配?

来自分类Dev

为什么此模式在“-”之后不匹配?

来自分类Dev

不匹配组的目的是什么

来自分类Dev

Postgres:外键不匹配所有行