首页 > 数据库 >java同步mysql的数据到PostgreSQL时报错ERROR: invalid byte sequence for encoding "UTF8": 0x00

java同步mysql的数据到PostgreSQL时报错ERROR: invalid byte sequence for encoding "UTF8": 0x00

时间:2023-05-31 10:57:28浏览次数:54  
标签:java sequence UTF8 encoding 0x00 ERROR byte

最近,同事在做一个功能,通过java程序将mysql中的一张表的数据同步到pgsql中,在同步过程中,插入到pgsql中出现了如下错误:
`### Error updating database. Cause: org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
在位置:unnamed portal parameter $13

The error may involve com.absin.modules.shop.dao.UprodCollectionProductDao.insert-Inline

The error occurred while setting parameters

SQL: INSERT INTO uprod_collection_product ( "center_id", "create_uid", "write_uid", "name", "state", "manufacturer_code", "brand", "erp_category", "univ_category_id", "official_website_url", "specs", "futures", "remark", "is_trial", "molecular_weight_non_ab", "storage_condition", "price", "sales_discount_type", "cas_code", "specification_url", "dangerous_goods", "other_name", "references", "molecular_formula", "appearance", "solubility", "business_type", "proxy_area", "authorized_customer_type", "working_hours", "classify_id", "need_login", "supplier_name", "supplier_code", "laboratory_level", "root_code", "is_delete", "search_keywords", "create_date", "write_date", "absin_json_info" ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )

Cause: org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00

在位置:unnamed portal parameter $13
; ERROR: invalid byte sequence for encoding "UTF8": 0x00
在位置:unnamed portal parameter $13; nested exception is org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
在位置:unnamed portal parameter $13`

和他一起通过查看一些资料,和咨询了公司的DBA定位到了问题,问题出现的原因是mysql的表中有些字段有转义字符 \0, 导致获取到数据后同步到pgsql中报错。
解决方法:在java中将从mysql中获取到的String类型的字段里的 \0 替换成 ""(空字符串):str.replaceAll("\0",""); 然后再插入到pgsql中。

标签:java,sequence,UTF8,encoding,0x00,ERROR,byte
From: https://www.cnblogs.com/seeAgain/p/17445392.html

相关文章

  • java modbus_rtu串口通讯
    基于modbus和串口通讯的Java分享本文推荐一个简单好用java实现基于modbus—rtu协议通讯方法:如果采用非标准modbus协议通讯,可以查看我的这篇博文:java实现串口通讯关于modbus的java开源库主要有以下四种:Jamod:JavaModbus实现:JavaModbus库。该库由DieterWimberger实施。Mod......
  • Java 删除某个目录下面所有的文件
    Java删除某个目录下面所有的文件 FilecodeDir=newFile("C:\\111111");deleteContents(codeDir);//删除111111目录下面所有内容,但不删除111111这个目录deleteContentsAndDir(codeDir);//删除111111目录下面所有内容,最后将111111这个......
  • java开发jwt示例
    pom文件引入<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.1</version></dependency>......
  • Java中泛型详解,非常详细
    前言在前面的几篇文章中,详细地给大家介绍了Java里的集合。但在介绍集合时,我们涉及到了泛型的概念却并没有详细学习,所以今天我们要花点时间给大家专门讲解什么是泛型、泛型的作用、用法、特点等内容。有些粉丝朋友,在之前就一直很好奇,比如List<String>中的<String>部分到底......
  • java实现泛型加法
    之前实践中实现数据的加法,很繁琐,比如下面,每一种类型都要写一遍,能不能用泛型方法实现呢?publicLonggetSum(Long...args){longinit=0L;for(Longarg:args){if(arg==null){arg=0L;}ini......
  • java 对象字段名转化——@SerializedName
    有时调用第三方接口返回的字段名和我们接收对象字段名不一致或不规范,可以使用@SerializedName这个注解进行转换;直接上代码:@DatapublicclassxxxVo{//将别名product_name转为productName@SerializedName("product_name")privateStringproductName;......
  • java中线程的启动方式
     1.继承Thread类重写run方法publicclassTreadTest01extendsThread{@SneakyThrows@Overridepublicvoidrun(){for(inti=0;i<100;i++){Thread.sleep(100);System.out.println(Thread.currentThread().getNam......
  • java中线程的状态
    一:从操作系统上说可以分为5种 新建:线程被创建出来时就绪:此时cpu拥有可执行权,但是未被真正执行运行中:线程正在执行等待:被阻塞了(sleepwait方法等)结束:整个线程结束二:从java源码中分为6种状态从Thread源码中我们可以看到一个枚举类:JAVA给出了以下6种状态NEW  ......
  • Java中如何中断线程
    在Java中,可以使用以下方法中断线程:1.使用`interrupt()`方法:每个线程对象都有一个`interrupt()`方法,用于中断该线程。当调用线程的`interrupt()`方法时,它会设置线程的中断状态为"中断",但并不会立即停止线程的执行。线程在执行过程中可以通过检查中断状态来决定是否终止执行。2.......
  • Java并发(七)----线程sleep、yield、线程优先级
    1、sleep与yieldsleep调用sleep会让当前线程从Running进入TimedWaiting状态(阻塞)其它线程可以使用interrupt方法打断正在睡眠的线程,这时sleep方法会抛出InterruptedException睡眠结束后的线程未必会立刻得到执行建议用TimeUnit的sleep代替Thread......