Ce qui est à l'origine de ce sqlite clé étrangère incompatibilité?

J'ai déjà vérifié cette question, et je pensais que j'avais la réponse - mais alors il ne regarde pas le droit de me.

J'ai le texte suivant réduits exemple:

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'); 

Lors de l'exécution de ce code, il écope:

$ sqlite3 foo.sq3 '.read mismatch.sql'    
Error: near line 27: foreign key mismatch

Par le biais de la liste de la question que j'ai cité:

  • la table parent (utilisateur) existe.
  • le parent colonnes (nom, propriétaire) existent
  • le parent colonnes sont, en fait, la clé primaire (j'ai pensé que peut-être été à l'origine)
  • l'enfant tableau des références de toutes les colonnes de clé primaire de la table parent

Alors que dans le monde pourrait être à l'origine de cette erreur?

OriginalL'auteur Wayne Werner | 2013-09-20