You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite3数据库外键约束报错:插入productions数据失败原因排查

SQLite外键不匹配(foreign key mismatch)排查方案

以下是触发foreign key mismatch - "productions" referencing "sharesplits"错误的常见原因及排查方法:

  • 关联字段类型不匹配
    必须保证productions表的sharesearned字段和sharesplits表的splitid字段数据类型完全一致,包括是否为整数、是否带NOT NULL约束等。比如sharesplits的splitid是INTEGER PRIMARY KEY,productions的sharesearned就不能是TEXT或NUMERIC类型,必须用INTEGER。

  • 被引用字段不是主键或唯一约束
    SQLite要求外键引用的字段必须是目标表的主键,或者是添加了UNIQUE约束的字段。检查sharesplits表的splitid是否被定义为PRIMARY KEY,或者有没有加UNIQUE约束——普通字段哪怕有对应数据,也无法作为外键引用目标。

  • 表创建或数据插入时机问题
    如果你是在开启PRAGMA foreign_keys = ON之前就创建了表,或者插入了sharesplits中不存在的splitid数据,后续插入会触发错误。可以先执行PRAGMA foreign_keys = OFF,清理productions里无效的sharesearned数据,再重新开启外键约束。

  • 表定义存在语法错误
    检查三张表的创建语句,有没有拼写错误(比如把splitid写成split_id),或者外键约束的语法写错。正确的外键定义示例:

    CREATE TABLE productions (
        id INTEGER PRIMARY KEY,
        title TEXT,
        sharesearned INTEGER,
        FOREIGN KEY(sharesearned) REFERENCES sharesplits(splitid)
    );
    
  • SQLite版本兼容性问题
    确认使用的SQLite版本在3.6.19及以上,旧版本默认不支持外键,即便开启PRAGMA foreign_keys = ON也不会生效。可以执行SELECT sqlite_version();查看当前版本。

内容的提问来源于stack exchange,提问作者Tyr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 05:12:13