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

在SBT项目中运行SQLite脚本遇SCHEMA语法错误,求解决方法

搞定你的SQLite语法错误问题

嘿,我来帮你解决SBT项目里运行SQL脚本时遇到的SQLite语法错误。你看到的[SQLITE_ERROR] near "SCHEMA": syntax error主要是两个原因导致的:SQLite不识别你的注释格式,还有你用了PostgreSQL专属的SQL语法,SQLite根本不认。下面一步步给你修复:

1. 先把注释改对

SQLite不支持用#当单行注释(这是MySQL的玩法),你脚本开头的# Air SCHEMA #会被SQLite当成无效代码。换成SQLite支持的注释方式就行:

-- Air SCHEMA

2. 替换PostgreSQL专属的数据类型

你的脚本里用了BIGSERIAL和BIGINT(2500),这俩都是PostgreSQL的专属语法,SQLite不买账:

  • BIGSERIAL:SQLite没有自增序列类型,用INTEGER PRIMARY KEY AUTOINCREMENT代替,这是SQLite实现自增主键的标准写法
  • BIGINT(2500):SQLite的BIGINT不需要指定长度参数,直接写BIGINT就好

3. 删掉多余的索引(可选但推荐)

你给id字段创建了products._idx索引,但id已经是主键了,SQLite会自动为主键创建唯一索引,手动加这个索引完全没必要,删掉就行。

修复后的完整脚本

-- Air SCHEMA
--- !Ups
CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    title VARCHAR(254) NOT NULL,
    description VARCHAR(254) NOT NULL,
    price BIGINT NOT NULL
);

--- !Downs
DROP TABLE products;

额外小提醒

如果你是用Play Framework的演化插件(SBT里的play-evolutions),要确认数据库配置确实指向SQLite,别不小心混了PostgreSQL的配置;另外SQLite会自动把VARCHAR(254)转成TEXT类型,这是正常现象,不影响使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:27:53