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

SQLite插入报错:表record共7列但仅提供了6个插入值

报错产生原因

错误提示sqlite3.OperationalError: table record has 7 columns but 6 values were supplied的本质是插入语句未显式指定目标字段,SQLite默认会匹配record表定义的全部7个列做值映射,但你当前传入的插入值只有6个,列数和值的数量不匹配,因此触发报错。
绝大多数场景下多出来的第7个列是建表时添加的自增主键字段(比如常见的id INTEGER PRIMARY KEY AUTOINCREMENT),写插入逻辑时没有把这个字段计入,又没指定要插入的具体字段,就会出现这个问题。

修复方案

最稳妥的修复方式是在INSERT语句中显式声明你要插入的6个字段,不要依赖表的默认列顺序匹配,这种写法兼容性最好,后续就算表结构调整也不容易触发同类错误。
修改后的可运行代码如下:

name, email, contact, gender, country, password = "Rodney", "rodney@gmail.com", "0717405766", "male", "kenya", "12345"

cur.execute(
    "INSERT INTO record (name, email, contact, gender, country, password) VALUES (:name, :email, :contact, :gender, :country, :password)",
    {
        'name': name,
        'email': email,
        'contact': contact,
        'gender': gender,
        'country': country,
        'password': password
    }
)
# 执行提交后数据才会真正写入数据库
conn.commit()

如果你确实需要给第7个列赋值,可以在字段列表和参数字典里补全对应字段和值即可;如果第7列是自增主键,不需要手动传值,用上面的写法就可以正常插入,自增字段会自动生成对应值。

注意:不推荐使用INSERT INTO 表名 VALUES(...)省略字段列表的写法,这种写法强依赖建表时的列顺序,只要后续给表加字段、调整字段顺序就会直接触发插入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:18:22