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

SQLite3修改现有列为唯一约束报错:near "UNIQUE": syntax error

解决SQLite添加唯一约束报错的问题

你遇到的sqlite3.OperationalError: near "UNIQUE": syntax error是因为SQLite的ALTER TABLE语法不支持直接用ADD UNIQUE这种写法,这是SQLite本身的语法限制导致的。

下面给两种可行的解决办法:

方法一:适用于所有SQLite版本

如果你的SQLite版本较低,只能通过新建表迁移数据的方式来添加唯一约束:

  1. 创建包含唯一约束的新表,完整复制原表的列结构,给目标列加上UNIQUE约束
CREATE TABLE new_tableName (
    -- 替换成你原表的列定义,示例如下
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    colName TEXT UNIQUE,
    other_col INTEGER
);
  1. 将原表的数据迁移到新表
INSERT INTO new_tableName SELECT * FROM tableName;
  1. 删除原表,把新表重命名为原表名
DROP TABLE tableName;
ALTER TABLE new_tableName RENAME TO tableName;

方法二:适用于SQLite 3.35.0及以上版本

从SQLite 3.35.0开始,支持直接通过ADD CONSTRAINT语法添加唯一约束:

ALTER TABLE tableName ADD CONSTRAINT unique_colName UNIQUE (colName);

这里的unique_colName是你给这个约束起的名称,可自定义。

注意事项

不管用哪种方法,先检查原表中colName列是否存在重复数据,如果有重复,添加约束会直接失败,需要先清理重复数据再操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:09:21