play.exceptions.JavaExecutionException: org.hibernate.exception.GenericJDBCException:

2019-06-20 09:37:06,266 ERROR ~ Incorrect string value: '\xF0\x9F\x92\x99\xE6\xB8...' for column 'scenic_info' at row 1
2019-06-20 09:37:06,268 ERROR ~ Internal Server Error (500) for request GET /travel/interface/tongcheng/getThreadGoodsSku?productId=283
play.exceptions.JavaExecutionException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:242)
        at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:237)
        at play.Invoker$Invocation.run(Invoker.java:264)
        at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:217)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1224)
        at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:108)
        at jobtobp.ConsumerSecnicJobToBp.updateModifyTempData(ConsumerSecnicJobToBp.java:300)
        at jobtobp.ConsumerSecnicJobToBp.handleScenicList(ConsumerSecnicJobToBp.java:116)
        at jobtobp.ConsumerSecnicJobToBp.ConsumerSecnicData(ConsumerSecnicJobToBp.java:79)
        at jobtobp.GetSecnicJobToBp.getSecnicData(GetSecnicJobToBp.java:65)
        at controllers.remote.tongcheng.OrderIDAction.queryIdProGoodsSku(OrderIDAction.java:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:750)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:708)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:684)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:679)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:172)
        ... 10 more
Caused by: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:219)
        at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1310)
        at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:396)
        at org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:188)
        at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:99)
        ... 24 more
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x99\xE6\xB8...' for column 'scenic_info' at row 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
        at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
        ... 28 more

play.exceptions.JavaExecutionException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:242)
        at play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:237)
        at play.Invoker$Invocation.run(Invoker.java:264)
        at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:217)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1224)
        at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:108)
        at jobtobp.ConsumerSecnicJobToBp.updateModifyTempData(ConsumerSecnicJobToBp.java:300)
        at jobtobp.ConsumerSecnicJobToBp.handleScenicList(ConsumerSecnicJobToBp.java:116)
        at jobtobp.ConsumerSecnicJobToBp.ConsumerSecnicData(ConsumerSecnicJobToBp.java:79)
        at jobtobp.GetSecnicJobToBp.getSecnicData(GetSecnicJobToBp.java:65)
        at controllers.remote.tongcheng.OrderIDAction.queryIdProGoodsSku(OrderIDAction.java:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:750)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:708)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:684)
        at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:679)
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:172)
        ... 10 more
Caused by: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:219)
        at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1310)
        at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:396)
        at org.hibernate.ejb.QueryImpl.internalExecuteUpdate(QueryImpl.java:188)
        at org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:99)
        ... 24 more
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x99\xE6\xB8...' for column 'scenic_info' at row 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
        at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
        ... 28 more
2019-06-20 09:37:12,479 ERROR ~ getTicketProductDetail ---1
2019-06-20 09:37:12,482 ERROR ~ getTicketProductDetail ---2
2019-06-20 09:37:12,484 ERROR ~ getTicketProductDetail ---3
2019-06-20 09:37:12,486 ERROR ~ getTicketProductDetail ---4
2019-06-20 09:37:12,487 ERROR ~ getTicketProductDetail ---5
2019-06-20 09:37:12,488 ERROR ~ getTicketProductDetail ---6
2019-06-20 09:37:12,490 ERROR ~ getTicketProductDetail ---7
2019-06-20 09:37:12,517 ERROR ~ getTicketProductDetail ---8
2019-06-20 09:37:12,519 ERROR ~ getTicketProductDetail ---9
2019-06-20 09:37:12,523 ERROR ~ getTicketProductDetail ---10
2019-06-20 09:37:12,525 ERROR ~ getTicketProductDetail ---11
2019-06-20 09:37:13,310 ERROR ~  [DUBBO] Unexpected error occur at send statistic, cause: Forbid consumer 10.10.2.94 access service com.alibaba.dubbo.monitor.MonitorService from registry 10.10.1.215:2181 use dubbo version 2.5.3, Please check registry access list (whitelist/blacklist)., dubbo version: 2.5.3, current host: 10.10.2.94
com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.10.2.94 access service com.alibaba.dubbo.monitor.MonitorService from registry 10.10.1.215:2181 use dubbo version 2.5.3, Please check registry access list (whitelist/blacklist).
        at com.alibaba.dubbo.registry.integration.RegistryDirectory.doList(RegistryDirectory.java:579)
        at com.alibaba.dubbo.rpc.cluster.directory.AbstractDirectory.list(AbstractDirectory.java:73)
        at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.list(AbstractClusterInvoker.java:260)
        at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:219)
        at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
        at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
        at com.alibaba.dubbo.common.bytecode.proxy0.collect(proxy0.java)
        at com.alibaba.dubbo.monitor.dubbo.DubboMonitor.send(DubboMonitor.java:113)
        at com.alibaba.dubbo.monitor.dubbo.DubboMonitor$1.run(DubboMonitor.java:70)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

先说明,服务器上使用的数据库是mysql,这个问题出现的原因,就是本地数据库,测试数据库,模拟数据库,跟线上数据库的

这个表的字符集编码都是utf8mb4,可以奇怪就奇怪在,同上的数据,同样的字符集编码,在本地,测试,模拟三个数据库都没有问题的数据,在线上就是不行,后来我就一点一点排查问题,首先这个表中不是所有的字段都能插入只有这个'scenic_info' 字段不行,这个字段是longtext字段,网上网友们许多都是把数据库表的字符集修改为utf8mb4就成,我这个是创建表的时候就是这个字符集,直到后来,我才发现线上环境的这个表这个字段之所以插入不进去就是以为,插入的数据中有汉字,把插入的字符串中是汉字全部转码为unicode编码就可以插入,所以我下面记录了这两个工具方法

/**
	 * 
	 * 描述: unicode  转  汉字
	 * @author: 
	 * @date:2019年6月20日 下午4:31:15
	 * @param unicode 
	 * @return
	 */
	public static String unicodeToCn(String unicode) {
	    /** 以 \ u 分割,因为java注释也能识别unicode,因此中间加了一个空格*/
	    String[] strs = unicode.split("\\\\u");
	    String returnStr = "";
	    // 由于unicode字符串以 \ u 开头,因此分割出的第一个字符是""。
	    for (int i = 1; i < strs.length; i++) {
	      returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
	    }
	    return returnStr;
	}
	 
	/**
	 * 
	 * 描述: 只把字符串中的汉字转化为unicode
	 * @author: 
	 * @date:2019年6月20日 下午4:48:49
	 * @param cn
	 * @return
	 */
	public static String cnToUnicodeNew(String cn) {
	    char[] chars = cn.toCharArray();
	    String returnStr = "";
	    for (int i = 0; i < chars.length; i++) {
	      if (!isChineseChar(chars[i])) {
	    	  returnStr += chars[i];
	      }else{
			  returnStr += "\\u" + Integer.toString(chars[i], 16);
		  }
	    }
	    return returnStr;
	}
	
	/**
	 * 
	 * 描述: 字符转unicode字符
	 * @author: 
	 * @date:2019年6月20日 下午4:31:41
	 * @param cn
	 * @return
	 */
	public static String cnToUnicode(String cn) {
	    char[] chars = cn.toCharArray();
	    String returnStr = "";
	    for (int i = 0; i < chars.length; i++) {
	      returnStr += "\\u" + Integer.toString(chars[i], 16);
	    }
	    return returnStr;
	}
	
	/**
     * 判断一个字符是否是汉字
     * PS:中文汉字的编码范围:[\u4e00-\u9fa5]
     *
     * @param c 需要判断的字符
     * @return 是汉字(true), 不是汉字(false)
     */
    public static boolean isChineseChar(char c) {
        return String.valueOf(c).matches("[\u4e00-\u9fa5]");
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值