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

SQLite是否支持UNIQUE KEY?迁移MariaDB至SQLite遇语法错误

MariaDB迁移SQLite:UNIQUE KEY语法错误解决方案

原MariaDB导出SQL语句

CREATE TABLE IF NOT EXISTS Persons (
    PersonID int,
    name varchar(255),
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE KEY `ID1234567` (`name`)
)

执行时的错误信息

OperationalError: near "KEY": syntax error

问题解决与原因说明

SQLite不支持MariaDB里UNIQUE KEY这种语法,要实现相同的唯一约束效果,有两种修改方式:

方式一:保留约束名的表级约束

用CONSTRAINT关键字指定约束名称,属于SQL标准写法,SQLite完全支持:

CREATE TABLE IF NOT EXISTS Persons (
    PersonID int,
    name varchar(255),
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT ID1234567 UNIQUE (name)
);

方式二:列级唯一约束

直接在name列定义后添加UNIQUE,适合不需要显式指定约束名的场景:

CREATE TABLE IF NOT EXISTS Persons (
    PersonID int,
    name varchar(255) UNIQUE,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

原因解释

SQLite的表约束语法中,唯一约束的格式为[CONSTRAINT 约束名] UNIQUE (列名),而UNIQUE KEY是MariaDB的特有语法糖,属于非标准SQL写法,SQLite并未兼容该语法。但SQLite完全支持唯一约束功能,只需改用标准语法即可实现相同效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:11