最近与软件商适配的时候碰到一个应用错误:

错误,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“相关推荐

  1. “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法

    前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 " Error:(1, 1) java: 非法字符: '\ufeff' "错误的解 ...

  2. java.lang.arr_jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决

    评论 # re: jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决 [未登录] 2007-04-29 20:14 Robin 不错,实践 ...

  3. 怎么解决java.lang.NoClassDefFoundError错误

    前言 在日常Java开发中,我们经常碰到Java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很 ...

  4. Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误的解决

    运行java.exe 出现Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误 以前就出现过,觉得自己环 ...

  5. Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题

    Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题 参考文章: (1)Java爬坑 -- 解决redis序列化java8 LocalDateTime错误的问题 ( ...

  6. java安装 2203_win7系统无法安装java程序提示“内部错误2203”的解决方法

    win7系统无法安装java程序提示"内部错误2203"的问题发生概率较高.怎样来处理win7系统无法安装java程序提示"内部错误2203"的问题,知道的人估 ...

  7. 关于怎么解决java.lang.NoClassDefFoundError错误

    很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的. NoClassDe ...

  8. 解决java虚拟机内存不足的错误 java.lang.OutOfMemoryError: PermGen space 没有文件TOMCAT_HOME/bin/catalina.sh

    网上解决java.lang.OutOfMemoryError: PermGen space这个错误多数采用的是修改文件TOMCAT_HOME/bin/catalina.sh 的配置,经过我的实践发现此 ...

  9. 怎么解决java.lang.NoClassDefFoundError错误 ,以及类的加载机制

    前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很 ...

  10. java编译报错提示编码gbk的不可映射字符啥意思_解决java编译错误:编码GBK的不可映射字符...

    [我的Android进阶之旅]解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符 1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责L ...

最新文章

  1. jpanel不使用jframe保存的图片为空_使用DataBinding还在为数据处理头疼?这篇文章帮你解决问题
  2. Radware LP配置步骤
  3. vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;
  4. 算法模型该如何解释?
  5. apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro
  6. ZooKeeper 初体验
  7. ThinkPHP6内核学生成绩管理系统源码
  8. oracle 函数 如何编写
  9. Unity3D 保姆级安装教程与收费方案和版本、下载地址,看不会算我输
  10. vsphere 添加 iscsi 存储设备
  11. nginx做域名映射到指定端口(阿里云服务器、阿里域名服务)
  12. yxc_第二章 数据结构(二)_Trie树
  13. YOLOv3 cfg文件详解
  14. 什么是中文分词及中文分词的应用
  15. 学软件测试最好的几本书,这8本书能帮你很多
  16. android 设置壁纸,开启出现短暂黑屏问题
  17. csdn--接口自动化测试之postman如何设置断言
  18. 使用jackson进行字符串,集合和json之间的转换
  19. 南下飞粤,共创未来! 【友盟+】即将出席2016广东互联网大会
  20. activiti 6.0 editor汉化详解

热门文章

  1. 达梦8初始化参数之BLANK_PAD_MODE
  2. 另一个视角看春节红包大战,为什么说智能云是百度第二增长引擎
  3. 第十一章 枚举与泛型总结
  4. 【EduCoder答案】HTML——表单类的标签
  5. python3 输出 26个大小写英文字母
  6. sql bigint 转varchar_SQL 优化案例一则
  7. 瑞星杀毒软件卸载方法
  8. Js中apply和call
  9. 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列三之安装过程,设置选项
  10. 美国大学生解释为什么那么喜欢snapchat