org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。
org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。
今天在写完SQL进行查询的时候,后台一直报错显示上面的信息。看错误完全不知道原因,就重新检查了一次SQL,发现自己在某一个接收参数的外面加上了引号而其他的并没有加。

怀疑是不是由于这个引起的,就删掉这个引号,再次执行,就没有再次出现这个问题了;查看其它的资料,说是吧#{parentId} 换位 ${parentId},所以就进行了测试一下在有引号的境况下,把 # 改为 $ 发现也不会报错了。于是就找了一下关于 # 和 $ 在SQL中的区别:
1. # 将传入的数据当成一个字符串,会对自动传入的数据加一个双引号 如:select * from User where parentid = #{parentId} 当parentId的值为100的时候
sql就会解析为 select * from User where parentid = “100”
2. $ 将传入的数据直接显示在sql语句中 如:select * from User where parentid = ${parentId} 当parentId的值为100的时候
sql会解析为select * from User where parentid = 100
主要差别就在上面:这也就解释了:为什么我在程序中加上引号之后需要用 $ ,而不是用 #
另外:
1. #方式能够很大程度上防止sql注入,而$无法防止sql的注入;
2. $一般用于传入数据库对象,例如传入表名;
3. mybatis排序时使用order by动态参数时是使用$而不是#;
总之能用# 的时候 就不用 $ 这就好了;
org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。的更多相关文章
- Try setting a different JdbcType for this parameter or a different configuration property.  Cause: org.postgresql.util.PSQLException: 栏位索引超过许可范围:2,栏位数:1
		执行mybaits sql <delete id="delete4BatchesByLineCi" parameterType="java.util.List&qu ... 
- Cause: org.postgresql.util.PSQLException: 栏位索引超过许可范围:13,栏位数:12
		Cause: org.postgresql.util.PSQLException: 栏位索引超过许可范围:13,栏位数:12. 这个报错的原因是在mapper文件中的sql语书写错误 <inse ... 
- Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying = integer
		Springboot项目,使用postgresql数据库,mybatis做持久层框架, <select id="select" resultMap="BaseRes ... 
- Postgresql客户端不能远程连接数据库服务器 org.postgresql.util.PSQLException:
		Postgresql安装完成之后,默认情况下是不允许远程客户端直接连接的,并且默认的监听配置文件里边,监听的服务器地址是127.0.0.1即:localhost 报如下错误: org.postgres ... 
- Cause: org.postgresql.util.PSQLException: ERROR: cached plan must not change result type的前因后果
		首先说明一下遇到的问题: PG数据库,对其中的某张表增加一列后,应用报错,信息如下: 应用使用相关框架如下:SpringBoot.MyBatis. ### Cause: org.postgresql. ... 
- 【hibernate postgresql】注解@TypeDef/@Enumerated/数据库字段gender为枚举类型,从前台接受到实体后进行保存报错:org.postgresql.util.PSQLException: ERROR: column "gender" is of type gender but expression is of type character varying
		数据库字段gender为枚举类型,从前台接受到实体后进行保存报错:org.postgresql.util.PSQLException: ERROR: column "gender" ... 
- org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户了(org.postgresql.util.PSQLException: FATAL: sorry, too many clients already)
		我正在尝试连接到Postgresql数据库,我收到以下错误: 错误:org.postgresql.util. PSQLException:致命:抱歉,已经有太多客户 错误是什么意思,我该如何解决? 我 ... 
- Caused by: org.postgresql.util.PSQLException: 错误: 语法错误 在 "desc" 、语法错误 在 "from" 附近
		此错误一般是由于postgres的数据库表字段名定义与关键字重名所致: 如下,创建的数据库表包含名称为“desc”的字段与倒叙查询的desc关键字冲突会导致Caused by: org.postgre ... 
- pg数据库org.postgresql.util.PSQLException: ERROR: "xxx" is not a sequence
		问题场景 对pg数据表执行插入语句的时候,报错如下: { "timestamp": 1587012576734, "status": 500, "er ... 
随机推荐
- Quarz.net  设置任务并行和任务串行
			如何设置Quarz.net某个任务完成后再继续执行该任务? Quarz.net 的任务有并行和串行两种: 并行:一个定时任务,当执行时间到了的时候,立刻执行此任务,不管当前这个任务是否在执行中: 串 ... 
- js便签笔记(11)——浏览TOM大叔博客的学习笔记 part1
			1. 前言 这两天看了一下TOM大叔的<深入理解js系列>中的基础部分,根据自己的实际情况,做了读书笔记,记录了部分容易绊脚的问题.写篇文章,供大家分享. 2. 关于HTMLCollect ... 
- mysql sql语句最大长度设置方法
			今天发现了一个错误:Could not execute JDBC batch update 最后发现原因是SQL语句长度大于1M,而我机器上的mysql是默认设置,也就是说mysql通讯的数据包大小设 ... 
- Flutter踩坑日记:Tab导航栏保持子页面状态
			最近应邀票圈小伙伴躺坑Flutter,项目初步雏形完结.以原来的工具链版本为基础做了Flutter版本,不过后面还是需要优化下项目接入Redux,以及扩展一些Native方法. 这里记录一下在开发过程 ... 
- java日期互转:LocalDateTime、String、TimeStamp、Long、Instant、Date
			由于java版本的迭代,一个使用java开发的项目中可能出现多种日期对象,例如LocalDateTime.LocalDate.Date,不像C#只有一个DateTime,因此在各种日期格式或者对象之间 ... 
- SQL服务器模式
			今天在执行这样一条语句时: SELECT store - freez AS less FROM `products`; 报如下错误: Data truncation: BIGINT UNSIGNED ... 
- POJ 2262 Goldbach's Conjecture (打表)
			题目链接: https://cn.vjudge.net/problem/POJ-2262 题目描述: In 1742, Christian Goldbach, a German amateur mat ... 
- zoj 1109 Language of FatMouse(map映照容器的典型应用)
			题目连接: acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1109 题目描述: We all know that FatMouse doe ... 
- 原本在滴滴只负责批100万元以上开支的Leslie决定,ofo所有30万元以上的开支都要由她亲自过目。那段时间,他“天天晚上12点才下班,眼睛都熬红了”
			戴威即将28岁了,熟悉他的人更愿意用“孩子”来形容他. 这样的特质,在追随者眼中,是天真.纯粹.理想主义:在合作伙伴眼中,是倔强高傲.不可一世:在投资人眼中,则是任性狂妄,一味蒙眼狂奔.他像个无意间闯 ... 
- 了解java虚拟机—并行回收器(7)
			并行回收器 新生代ParNew回收器 ParNew只是简单地将串行回收器多线程化,他的回收策略,算法以及参数都喝新生代串行回收器一样.由于并行回收器使用多线程进行垃圾回收,因此,在并发能力强的CPU上 ... 
