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

Spring Boot整合PostgreSQL插入URL字段报smallint类型语法错误

问题根因

这个报错和Spring Boot实体类定义无关,你是直接执行SQL文件触发的错误,核心原因是INSERT语句的列与值出现错位,PostgreSQL把你传入的URL字符串匹配到了smallint类型的字段上做类型转换,最终报错。

排查方向

按优先级从高到低检查:

  • 先核对问题SQL的列清单和VALUES内值的对应关系:数清楚列清单里写了多少个字段,对应每个VALUES括号里有多少个值,90%的同类报错都是这里多写/漏写了一个值,导致后续所有值顺位偏移——比如things前面少写了一个值,就会出现前一个字段拿到本该给更前字段的值、smallint类型字段拿到URL字符串的情况,和你现在的报错完全吻合。
  • 登录PostgreSQL数据库执行\d 你的实际表名,直接查看表的真实结构,不要只参考Java实体类定义:
    1. 确认表中确实存在item_url字段,且字段类型是varchar/text等字符串类型,没有被误设为smallint
    2. 确认当前连接的数据库、schema正确,没有操作到结构不同的旧同名表
  • 如果你依赖Hibernate的ddl-auto=update自动同步表结构,不要默认它一定同步成功:字段名映射冲突、数据库方言配置错误都可能导致item_url列没有被实际创建,此时执行带该列的INSERT也可能出现异常类型报错。
快速验证方法

单独执行只包含两个字段的插入语句做测试:

INSERT INTO 你的表名(things, item_url) 
VALUES (5, 'https://someurl.com/that-im/trying-to-add/');

如果该语句执行成功,就能100%确认是原长INSERT语句的列、值顺序/数量不匹配,逐行对齐列和值的位置就能找到错位点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:09:22