解决Java应用的后台错误:“操作符不存在: character varying = bytea“
最近与软件商适配的时候碰到一个应用错误:
错误,42883,"操作符不存在: character varying = bytea",,"没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换."
一、原因分析
如果在应用里含有等值条件判断的SQL,“=”左边是字符串类型(character varying),右边的值是输入值。此时,该输入值如果是空值(NULL),jdbc进行转换时就会出现误判,误认为控制是bytea类型的。而数据库又没有对应左右值类型的的操作符或针对bytea的类型转换,从而导致上面的错误提示。
二、处理方式
推荐从应用层面对输入值是否是空值进行判断控制分别进行处理:
- 如果是非空继续等值判断;
- 如果是空值,则使用“is [not] null”进行判断。
若是要从数据库层面来处理,则可以从两个角度来处理:
- 类型转换角度:
-- 函数 bytea_to_text
create or replace function bytea_to_text( bytea )
returns text
as $$select convert_from($1, 'UTF8');
$$ language sql strict; -- 隐士转换
create cast ( bytea as text ) with function bytea_to_text( bytea ) as implicit;
- 操作符角度:
-- 自定义操作符调用的函数
CREATE or replace FUNCTION varchar_equal_bytea( varchar, bytea )RETURNS boolean
AS $$SELECT $1::text::bytea = $2::bytea
$$ LANGUAGE SQL;-- 创建“=”操作符
CREATE OPERATOR =(PROCEDURE = varchar_equal_bytea,LEFTARG = varchar,RIGHTARG = bytea);-- 给操作符增加注释
COMMENT ON OPERATOR =( varchar, bytea) IS ' varchar equals bytea ';
注意:
使用新增操作符,有时候应用里还会继续出现该错误。推荐使用类型转换,但更推荐在应用代码层面来处理这个问题。
解决Java应用的后台错误:“操作符不存在: character varying = bytea“相关推荐
- “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法
前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 " Error:(1, 1) java: 非法字符: '\ufeff' "错误的解 ...
- java.lang.arr_jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决
评论 # re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2007-04-29 20:14 Robin 不错,实践 ...
- 怎么解决java.lang.NoClassDefFoundError错误
前言 在日常Java开发中,我们经常碰到Java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很 ...
- Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误的解决
运行java.exe 出现Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误 以前就出现过,觉得自己环 ...
- Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题
Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题 参考文章: (1)Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题 ( ...
- java安装 2203_win7系统无法安装java程序提示“内部错误2203”的解决方法
win7系统无法安装java程序提示"内部错误2203"的问题发生概率较高.怎样来处理win7系统无法安装java程序提示"内部错误2203"的问题,知道的人估 ...
- 关于怎么解决java.lang.NoClassDefFoundError错误
很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的. NoClassDe ...
- 解决java虚拟机内存不足的错误 java.lang.OutOfMemoryError: PermGen space 没有文件TOMCAT_HOME/bin/catalina.sh
网上解决java.lang.OutOfMemoryError: PermGen space这个错误多数采用的是修改文件TOMCAT_HOME/bin/catalina.sh 的配置,经过我的实践发现此 ...
- 怎么解决java.lang.NoClassDefFoundError错误 ,以及类的加载机制
前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很 ...
- java编译报错提示编码gbk的不可映射字符啥意思_解决java编译错误:编码GBK的不可映射字符...
[我的Android进阶之旅]解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符 1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责L ...
最新文章
- jpanel不使用jframe保存的图片为空_使用DataBinding还在为数据处理头疼?这篇文章帮你解决问题
- Radware LP配置步骤
- vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;
- 算法模型该如何解释?
- apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro
- ZooKeeper 初体验
- ThinkPHP6内核学生成绩管理系统源码
- oracle 函数 如何编写
- Unity3D 保姆级安装教程与收费方案和版本、下载地址,看不会算我输
- vsphere 添加 iscsi 存储设备
- nginx做域名映射到指定端口(阿里云服务器、阿里域名服务)
- yxc_第二章 数据结构(二)_Trie树
- YOLOv3 cfg文件详解
- 什么是中文分词及中文分词的应用
- 学软件测试最好的几本书,这8本书能帮你很多
- android 设置壁纸,开启出现短暂黑屏问题
- csdn--接口自动化测试之postman如何设置断言
- 使用jackson进行字符串,集合和json之间的转换
- 南下飞粤,共创未来! 【友盟+】即将出席2016广东互联网大会
- activiti 6.0 editor汉化详解
热门文章
- 达梦8初始化参数之BLANK_PAD_MODE
- 另一个视角看春节红包大战,为什么说智能云是百度第二增长引擎
- 第十一章 枚举与泛型总结
- 【EduCoder答案】HTML——表单类的标签
- python3 输出 26个大小写英文字母
- sql bigint 转varchar_SQL 优化案例一则
- 瑞星杀毒软件卸载方法
- Js中apply和call
- 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列三之安装过程,设置选项
- 美国大学生解释为什么那么喜欢snapchat