Sqlite3-BLOB上的外键不匹配

Sqlite3-BLOB上的外键不匹配,sqlite,foreign-keys,Sqlite,Foreign Keys,我正在使用外键,不幸的是,在下面的情况下,我无法解决不匹配的问题。。。我错过了什么?TEBLE由以下人员创建: CREATE TABLE IF NOT EXISTS `devices` ( `guid` BLOB NOT NULL, `device_name` TEXT NOT NULL, `class` INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS `device_states` ( `guid_d`

我正在使用外键,不幸的是,在下面的情况下,我无法解决不匹配的问题。。。我错过了什么?TEBLE由以下人员创建:

CREATE TABLE IF NOT EXISTS `devices` (
    `guid`  BLOB NOT NULL,
    `device_name`   TEXT NOT NULL,
    `class` INTEGER NOT NULL
);

CREATE TABLE IF NOT EXISTS `device_states` (
    `guid_d`    BLOB NOT NULL,
    `id_d`  TEXT DEFAULT NULL,
    `tp`    INTEGER NOT NULL,
    `state` INTEGER NOT NULL,
    `note`  TEXT DEFAULT NULL,
    `status`    INTEGER NOT NULL DEFAULT 0,
    PRIMARY KEY(`guid_d`,`tp`),
    FOREIGN KEY(`guid_d`) REFERENCES devices ( `guid` ) ON DELETE RESTRICT
);
CREATE INDEX IF NOT EXISTS idx_ds_tp ON device_states(`tp`);

INSERT OR IGNORE INTO `devices` VALUES (x'438D6E77DC3946A4819617ADBA18ADB2','guid_door', 1);
选择波纹管按预期工作:

SELECT * FROM `devices` WHERE guid = x'438D6E77DC3946A4819617ADBA18ADB2';
1从以下位置返回的行:从
设备中选择*其中guid=x'438D6E77DC3946A4819617ADBA18ADB2';(耗时1毫秒)

然而,当我尝试将数据插入到设备表时,我得到了错误

INSERT INTO device_states (guid_d, id_d, tp, state, note, status) 
VALUES (x'438D6E77DC3946A4819617ADBA18ADB2', "D", 132456, 1, "door open", 2);
外键不匹配-“设备状态”引用“设备”:插入 进入设备状态(guid、id、tp、状态、注释、状态)值 (x'438D6E77DC3946A4819617ADBA18ADB2',“D”,132456,1,“门打开”,2)

有人看到这个问题了吗???非常感谢

报告说:

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

guid
没有这样的约束