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

Jupyter Notebook中SQLite语法错误求助:创建cast_1NF表失败

解决SQLite在Jupyter Notebook中创建表的语法错误问题

错误原因分析

你遇到的两个语法错误都是SQLite的固有规则导致的:

  1. AUTOINCREMENT用法违规:SQLite里AUTOINCREMENT只能用于被定义为INTEGER PRIMARY KEY的单一列,不能作为复合主键的一部分。你原本把id和imdb_id设为复合主键,同时给id加AUTOINCREMENT,这直接违反了SQLite的语法规则。
  2. 关键字冲突:cast是SQLite的保留关键字,直接用作列名会触发语法错误,必须进行转义处理。

修正后的代码

如果需要自增的id作为主键,同时保留imdb_id字段,推荐使用下面的代码:

# create new table, cast1NF
%%sql 
DROP TABLE IF EXISTS cast_1NF;
CREATE TABLE cast_1NF (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    imdb_id VARCHAR, 
    "cast" VARCHAR -- 用双引号转义关键字
);

如果业务上必须设置id和imdb_id为复合主键,那不能给id用AUTOINCREMENT,可以依赖SQLite默认的ROWID实现自增,或者手动管理id值,代码如下:

# create new table, cast1NF
%%sql 
DROP TABLE IF EXISTS cast_1NF;
CREATE TABLE cast_1NF (
    id INTEGER, 
    imdb_id VARCHAR, 
    "cast" VARCHAR,
    PRIMARY KEY (id, imdb_id)
);

补充说明

  • 之前提示DROP TABLE报错,本质是因为后续的CREATE TABLE语法错误导致整个SQL块解析失败,修正CREATE TABLE后,DROP TABLE IF EXISTS就能正常运行。
  • 如果你需要imdb_id字段唯一,可以在表定义里添加UNIQUE(imdb_id)约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:20:14