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

SQLite添加主键时INSERT+SELECT同类型字段出现数据类型不匹配问题

问题原因分析
  • 该报错几乎不可能是DbBrowser for SQLite的执行导致,根因出在数据本身的类型不匹配,和客户端工具无关
  • 你早期执行的插入语句INSERT INTO cities (id, name) VALUES ('pan', 'doul');中,给声明为INTEGER类型的id字段传入了字符串值'pan',SQLite默认的动态类型机制不会对此做强校验,所以该条数据可以正常写入旧表。重命名为old_cities后,这条数据的id字段实际存储类型为TEXT,和字段声明的INTEGER不一致。
  • 新创建的cities表将id设为INTEGER类型主键,SQLite对INTEGER PRIMARY KEY字段有特殊的强类型约束,仅支持存储整数类型值,写入字符串类型的'pan'时自然触发类型不匹配错误。
修复方案
  • 测试场景下直接删除old_cities中的id = 'pan'脏数据,再执行插入即可完成迁移
  • 业务场景下先统一将old_cities中所有id字段值转换为整数类型,确认无异常后再执行插入操作

验证方法:你可以直接使用sqlite3原生命令行工具执行相同的SQL脚本,会得到完全一致的类型不匹配报错,可排除客户端工具问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:39:02