알 수 없는 초기 문자 집합 인덱스 '255'가 서버에서 수신됨
최대 절전 모드 세션을 생성하는 동안 다음 예외가 발생하고 실패합니다.
발생 원인: java.sql.SQL 예외:알 수 없는 초기 문자 집합 인덱스 '255'가 서버에서 수신되었습니다.초기 클라이언트 문자 집합은 'characterEncoding' 속성을 통해 강제로 설정할 수 있습니다.com. mysql bc. jd bc에서.SQError.createSQcom.mysql.jdbc에서 Lexception(SQError.java:1055).SQError.createSQcom.mysql.jdbc에서 Lexception(SQError.java:956).SQError.createSQLexception(SQError.java:926)
여기서 한 가지 가능한 해결책을 찾았지만 안타깝게도 DB 서버에 접근할 수 없어 구성을 변경할 수 없습니다.DB 서버 변경에 대해 제안된 솔루션이 제공되었고, 제 경우에는 그러한 접근 권한이 없으므로 중복이 아님을 유의하시기 바랍니다.
고객측에서 이 문제를 해결할 수 있는 기회가 있습니까?아래에서 제가 session을 작성하는 pom.xml 파일과 java 코드를 찾을 수 있습니다.
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void shutdown() {
// Close caches and connection pools
getSessionFactory().close();
}
}
그리고 나의 pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
일부 추가 조사 결과 MySQL v.8.0에서 수행된 변경 사항에서 문제가 발생한 것으로 나타났습니다.
문자 집합 지원
중요한 변경 사항:기본 문자 집합이 latin1에서 utf8mb4로 변경되었습니다.이러한 시스템 변수는 다음과 같은 영향을 받습니다.
character_set_server 및 character_set_database 시스템 변수의 기본값이 latin1에서 utf8mb4로 변경되었습니다.
collation_server 및 collation_database 시스템 변수의 기본값이 latin1_swedish_ci에서 utf8mb4_0900_ai_ci로 변경되었습니다.
이 사항은 새 의 mysql-connector-java 에서되었으며 MySQL 를 가 없습니다.그래서 에서 바꿉니다.5.1.6
.5.1.44
문제를 해결합니다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
URL 아래 사용자, 저에게 적합합니다.
url=jdbc:mysql://localhost:3306/hybrisdb?characterEncoding=latin1&useConfigs=maxPerformance
이거 나한테 잘 맞고 너도 이거 먹어봐 :)
url="jdbc:mysql://localhost:3306/dbname?characterEncoding=utf8"
이거 나한테 효과가 있어요!
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/empdemo?characterEncoding=utf8"></property>
이 아래의 변화는 나에게 효과가 있었습니다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
이와 관련하여
@Bean
@Profile("dev")
public DataSource dataSourceDev() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername("root");
dataSource.setPassword("password");
dataSource.setUrl("jdbc:mysql://localhost:3306/<yourdatabasehere>");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
return dataSource;
}
같은 문제에 직면하고 있었습니다.그래서 커넥터 버전(8.0.18)을 업데이트했더니 해결되었습니다.
내 URL에 이 내용을 추가하는 것이 도움이 되었습니다.
useUnicode=true&character_set_server=utf8mb4&useLegacyDatetimeCode=false
이로써 문제는 완전히 해결되었습니다.
아래 url:-를 사용합니다.
url = "jdbc:mysql://localhost:3306/dbName?characterEncoding=latin1&useConfigs=maxPerformance","root","password" ```
자바 8 클라이언트 프로그램과 연결 중에 mysql version 8.0.11에 대해서도 같은 문제가 발생하였습니다.해결책으로 mysql 공식 사이트에서 최신 커넥터를 다운받았습니다.아래에 링크를 언급했습니다: https://dev.mysql.com/downloads/connector/j/
운영 체제로 Platform independent를 선택하고 zip 아카이브를 다운로드합니다.빌드 경로에 사용 가능한 항아리를 추가합니다(외부 항아리로 추가).
이것이 당신의 문제를 해결해 주기를 바랍니다 :)
이 커넥터가 필요합니다: Connector\J 5.1 드라이버.
이것이 호환 커넥터입니다.
hibernate.xml에 이 속성을 입력합니다.
<property name="hibernate.connection.characterEncoding">utf8</property>
그리고 당신의 mysql 커넥터를 에 업데이트 합니다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
이 문제를 해결하기 위해 드라이버 클래스 이름을 아래 spring과 같이 변경합니다. datasource.driver-class-name=com. mysql. cj. jdbc.드라이버 이것은 mysql 서버 8.0.16과 mysql 커넥터 8.0.16에서 나에게 잘 작동합니다.
`spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.jpa.hibernate.ddl-auto=create
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect`
초기 클라이언트 문자 집합은 'characterEncoding' 속성을 통해 강제로 설정해야 한다고 생각합니다.
그래서 저에겐 효과가 있었습니다.
jdbc:mysql://localhost:3306/bookmanagersystem?characterEncoding=latin1&useConfigs=maxPerformance
hibernate.cfg.xml 파일에서 편집한 후 동일한 오류가 발생했습니다.
<property name="connection.url">jdbc:mysql://localhost:3306/dbName?characterEncoding=utf8</property>
같은 문제가 있었습니다. MySql이 버전 5에서 8.0.34로 업그레이드되었지만 문제는 내 자바 코드 기반이 1.6이라는 것이었습니다. 둘 다에서 작동할 수 있는 올바른 버전을 찾기 위해 많은 어려움을 겪었고 아래 솔루션이 나에게 효과가 있다는 것을 발견했습니다.
MySql 커넥터 = mysql- connector- java-5.1.16
연결 = jdbc:mysql://localhost:3306/somedb?문자 인코딩 = latin1&usesSSL=
언급URL : https://stackoverflow.com/questions/50855622/unknown-initial-character-set-index-255-received-from-server
'programing' 카테고리의 다른 글
검색 결과에 ACF 필드 추가 페이지 WordPress (0) | 2023.09.25 |
---|---|
Oracle PL/SQL Developer로 덤프를 만드는 방법은? (0) | 2023.09.25 |
유형 열거형의 IBInspectable을 작성하는 방법 (0) | 2023.09.25 |
(푸쉬한) 잘못된 커밋 메시지를 init에서 편집하려면 어떻게 해야 합니까? (0) | 2023.09.25 |
어떻게 하면 유튜브 비디오의 음소거를 해제하고 자동 재생을 해제할 수 있습니까? (0) | 2023.09.25 |