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

SQLite插入数据报错:contacts表列值不匹配及row value misused问题

SQLite批量插入数据错误排查与修正

问题描述

在Programiz完成SQLite课程作业时,创建contacts表后尝试插入10条记录,出现错误:

Error: table contacts has 5 columns but 10 values were supplied

删除5条记录后又出现:

Error: row value misused

错误原因

  1. 第一个错误:INSERT语句错误地用外层括号包裹所有行数据,导致SQLite将每个内层括号的内容解析为单个值,10个值与表的5列数量不匹配。
  2. 第二个错误:嵌套括号的写法不符合SQLite多行插入语法,即便减少记录数量,依然会触发语法解析错误。

另外,contacts表的personal_id是自增主键,插入时可省略该字段值,由SQLite自动生成。

修正后的SQL代码

-- 5 columns
-- primary key & correct datatypes
-- show table structures
-- enter 10 records and view
-- update a record
-- delete a record
-- create relational database (primary key from first table included)

CREATE TABLE contacts (
  personal_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
  first_name TEXT NOT NULL,
  last_name TEXT NOT NULL, 
  email_address TEXT NOT NULL UNIQUE, 
  phone_number TEXT NOT NULL UNIQUE
);

-- 正确批量插入写法:VALUES后直接跟多个行数据,每行用括号包裹
INSERT INTO contacts (first_name, last_name, email_address, phone_number)
VALUES 
('James', 'May', 'j.may@gmail.com', '0306 999 0278'),
('James', 'Bay', 'j.bay@gmail.com', '0113 496 0664'),
('James', 'Cray', 'j.cray@gmail.com', '0116 496 0578'),
('James', 'Faye', 'j.faye@gmail.com', '0116 496 0629'),
('James', 'Way', 'j.way@gmail.com', '0151 496 0764'),
('James', 'Pay', 'j.pay@gmail.com', '0141 496 04678'),
('James', 'Lay', 'j.lay@gmail.com', '0116 496 0840'),
('James', 'Whey', 'j.whey@gmail.com', '0113 496 0744'),
('James', 'Say', 'j.say@gmail.com', '0161 496 08588'),
('James', 'Gray', 'j.gray@gmail.com', '0114 496 0401');

关键说明

  • 明确指定要插入的列名,避免因主键自增导致的列数匹配问题。
  • 多行插入时,每个行数据单独用括号包裹,直接放在VALUES后,无需额外外层括号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:20:26