You need to enable JavaScript to run this app. SQLite3建表提示外键定义中CargoID列不存在 如何排查语法错误?
优惠活动
大模型
产品
解决方案
定价
更多

SQLite3建表提示外键定义中CargoID列不存在 如何排查语法错误?

问题原因

报错的核心逻辑是:SQLite要求外键定义中引用的字段,必须先在当前表的字段声明部分完成定义,你给出的建表语句共有3处可直接导致运行失败的错误:

  • 直接触发你当前收到报错的问题:Usuarios 表的外键定义引用了CargoID字段,但你没有在Usuarios表的字段列表中声明该字段,反而额外定义了未使用的Cargo TEXT字段
  • 隐藏报错点1:Alunos表的外键定义引用了Criado_Por字段,但同样没有在Alunos表的字段列表中声明该字段
  • 隐藏报错点2:Alunos表的Data_Alteracao字段未指定数据类型,不符合SQLite建表语法要求
修正后可正常运行的SQL脚本
DROP TABLE IF EXISTS Usuarios;
DROP TABLE IF EXISTS Alunos;
DROP TABLE IF EXISTS Cargo;

CREATE TABLE Cargo (
  Nome_Cargo TEXT UNIQUE NOT NULL,
  CargoID INTEGER NOT NULL PRIMARY KEY UNIQUE 
);

CREATE TABLE Usuarios (
  Id_Usuario INTEGER PRIMARY KEY AUTOINCREMENT,
  Nome TEXT UNIQUE NOT NULL,
  CargoID INTEGER, -- 补充外键关联所需的字段
  CPF TEXT UNIQUE,
  Is_admin INTEGER,
  User_login TEXT UNIQUE NOT NULL,
  Senha TEXT NOT NULL,
  FOREIGN KEY (CargoID) REFERENCES Cargo(CargoID)
);

CREATE TABLE Alunos (
  Id_Aluno INTEGER PRIMARY KEY AUTOINCREMENT,
  Nome_Completo TEXT NOT NULL,
  RA TEXT UNIQUE,
  Data_Nascimento TEXT,
  RM INTEGER UNIQUE,
  Data_Alteracao TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 补充字段数据类型
  Criado_Por INTEGER, -- 补充外键关联所需的字段
  FOREIGN KEY (Criado_Por) REFERENCES Usuarios(Id_Usuario)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 16:36:07