简体   繁体   English

无法将字符串 '\xAC\xED\x00\x05~r...' 从二进制转换为 utf8mb3

[英]Cannot convert string '\xAC\xED\x00\x05~r...' from binary to utf8mb3

I am getting an exception whenever I run this piece of code:每当我运行这段代码时,我都会遇到异常:

StringBuilder sqlQuery = new StringBuilder("SELECT this_.id as id, this_.number_of_hours as number_of_hours, this_.date_start as date_start, this_.date_end as date_end, this_.date_created as date_created, this_.obsolete as obsolete FROM (");
sqlQuery.append(" select tt.* from employee_tracking tt ")
        .append(" inner join contract c on tt.contract_id=c.id ")
        .append(" where tt.obsolete = :OBSOLETE ");
    
// UNION
sqlQuery.append(" UNION ");

sqlQuery.append(" select tt_.* from employee_tracking tt_ ")
        .append(" inner join contract_extension ce_ on tt_.contract_extension_id=ce_.id ")
        .append(" where tt_.obsolete = :OBSOLETE ");
    
sqlQuery.append(") AS this_ ORDER BY id ASC ");


SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(sqlQuery.toString());
query.setParameter("OBSOLETE", 0);
    
query.addEntity(EmployeeTracking.class);

List lst = query.list();

The exception stack trace:异常堆栈跟踪:

WARN  SqlExceptionHelper - SQL Error: 3854, SQLState: HY000
ERROR SqlExceptionHelper - Cannot convert string '\xAC\xED\x00\x05~r...' from binary to utf8mb3

This is my server character set config:这是我的服务器字符集配置:

mysql> use lambda;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb3            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8mb3            |
| collation_connection     | utf8mb4_0900_ai_ci |
| collation_database       | utf8_danish_ci     |
| collation_server         | utf8mb4_0900_ai_ci |
+--------------------------+--------------------+
10 rows in set (0,00 sec)

mysql> SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
    -> WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "lambda" AND T.table_name = "employee_tracking";
+--------------------+
| CHARACTER_SET_NAME |
+--------------------+
| utf8mb4            |
+--------------------+
1 row in set (0,01 sec)

My jdbcUrl:我的 jdbcUrl:

jdbc:mysql://localhost:3306/lambda?jdbcCompliantTruncation=false&serverTimezone=Europe/Berlin&allowPublicKeyRetrieval=true&useSSL=false&zeroDateTimeBehavior=round

I am using the following MySQL Server version:我正在使用以下 MySQL 服务器版本:

~ % /usr/local/mysql/bin/mysql --version   
/usr/local/mysql/bin/mysql  Ver 8.0.27 for macos11 on x86_64 (MySQL Community Server - GPL)

Any help please will be more than appreciated.请提供任何帮助,我们将不胜感激。

It seems your "OBSOLETE" is passed as Serealized instead of as String cause it's an Object, which saved as String in the Database.似乎您的“OBSOLETE”作为 Serealized 而不是 String 传递,因为它是 Object,在数据库中保存为 String。 Try to use simple "toString()" by passing this parameter.尝试通过传递此参数来使用简单的“toString()”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.sql.SQLException:不正确的字符串值:'\xAC\xED\x00\x05sr...' - java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' 这个'\\ x00 \\ x00 \\ x00 \\ x05'的编码是什么? - What encoding is this '\x00\x00\x00\x05'? 使用redis进行Spring引导缓存,key有\\xac\\xed\\x00\\x05t\\x00\\x06 - Spring boot caching with redis,key have \xac\xed\x00\x05t\x00\x06 Hibernate 数据截断:不正确的 integer 值:'\xAC\xED\x00\x05sr\x00& 尝试保存 OneToMany 关系时 - Hibernate data truncation: Incorrect integer value: '\xAC\xED\x00\x05sr\x00& when trying to save a OneToMany Relation 字符串作为\\ x03 \\ x00 \\ x00 \\ x00到整数 - String as \x03\x00\x00\x00 to integer HBase java 错误 - 预期 HEADER=HBas 但收到 HEADER=\x00\x00\x01\x0B - HBase java error - Expected HEADER=HBas but received HEADER=\x00\x00\x01\x0B Java 使用 AsynchronousSocketChannel 将空字节 (\\x00) 作为 1 个字符发送 - Java send nullbyte (\x00) as 1 character using AsynchronousSocketChannel 在向Accumulo写入文本时尾随空(\\ x00)字符 - Trailing null (\x00) characters when writing text to Accumulo 为什么SqlExceptionHelper将布尔约束违反解释为\\ x00 - Why does SqlExceptionHelper interpret boolean constraint violation as \x00 无法将值“ 2012-04-05 10:20:00”从XX列转换为TIMESTAMP - Cannot convert value '2012-04-05 10:20:00' from column XX to TIMESTAMP
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM