При установке соединения с базой данных MySQL я получаю следующую ошибку
java.sql.SQLException: Unknown initial character set index '255' received from
server. Initial client character set can be forced via the 'characterEncoding'
property.
После поиска в Google я узнал, что нам нужно изменить 2 параметра в my.ini или my.cnf.
Я использую MySQL версии 8.0.11, и у меня нет этого файла.
Поэтому я изменил эти параметры с помощью команд SQL:
Обратите внимание, что название и продолжительность - это название столбца в таблице.
ALTER TABLE courses MODIFY name VARCHAR(50) COLLATE utf8_unicode_ci;
ALTER TABLE courses MODIFY duration VARCHAR(50) COLLATE utf8_unicode_ci;
ALTER TABLE courses MODIFY name VARCHAR(50) CHARACTER SET utf8;
ALTER TABLE courses MODIFY duration VARCHAR(50) CHARACTER SET utf8;
Следовательно, моя таблица выглядит так
После этого я перезапустил сервер MySQL, но все еще получаю указанную выше ошибку.
Обратите внимание, что я развертываю свое приложение в tomcat и выполняю вызов rest API, который подключается к базе данных. При подключении к базе данных я получаю указанную выше ошибку.
Обратите внимание, что изменение набора символов определенного столбца не повлияет на набор символов соединения. Какие именно два параметра вы обнаружили в конфигурации MySQL, которые нужно изменить? А вы пробовали указать свойство соединения characterEncoding, как это предлагается в сообщении об ошибке?




Похоже, вам нужно загрузить последнюю версию j jar разъема:
Здравствуйте, я использую только последнюю версию j jar-соединителя, т.е. я использую версию 8.0.11
В версии 8 изменен набор символов по умолчанию. Когда вы добавляете свой набор символов в URL-адрес подключения, например? Character Encoding = latin1, это может сработать.
Добавлен ?characterEncoding=utf8 в URL.
Используя интерфейс MySQLWorkbench:
Сначала щелкните в своем соединении ->
После щелчка в файле параметров
И измените значения character-set-server и collation-server на значения ниже:
Обязательно перезапустите сервер mysql, открыв службы и перезапустив сервер mysql.
Не работает у меня
это из-за версии mysql-коннектора, т.е. Версия установки My-sql и версия зависимости не совпадают.
использовать ту же версию для myS
Добавьте файл jar зависимости соединителя в файл POM после перекрестной проверки с вашим сервером MySql версии 8.0.x добавьте эту зависимость, которая у меня работала mysqlmysql-connector-java 8.0.11
Используйте ту же версию MySQL, что и mysql-connector. Если вы используете Tomcat, сохраните коннектор в папке lib в Tomcat.
Вы можете добавить ?characterEncoding=latin1" после строки URL-адреса следующим образом
например:
"jdbc:mysql://localhost/yourDB?characterEncoding=latin1";
Это может сработать.
Я использую springboot, liquibase, mysql
У меня есть решение:
Эта ошибка возникает только из-за того, что соединитель mysql в зависимости и сервер mysql, который вы устанавливаете, не совпадают (в моем случае я использую соединитель mysql более низкой версии и последний сервер mysql). Так что просто измените объем коннектора mysql на runtime:
знаток
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
Gradle
dependencies {
//... other dependencies
runtimeOnly group:'mysql', name:'mysql-connector-java'
}
Или, если проблема еще не решена, используйте ту же или близкую версию как для сервера mysql, так и для соединителя mysql.
Добавление следующего в строку подключения должно работать:
jdbc:mysql://localhost/yourDB?characterEncoding=latin1;
Просто скачайте последнюю версию jar-файла гибернации с
https://www.javatpoint.com/src/hb/hibernatejar.zip
и файл jar коннектора MySQL от
https://dev.mysql.com/downloads/connector/j/5.1.html
Установив CharacterEnconding, будут работать параметры useUnicode
jdbc: mysql: // localhost: 3306 / dbname? characterEncoding = utf8 & useSSL = false & useUnicode = true "
Совместимая версия mysql-connector-java должна требоваться в соответствии с установленным сервером MySQL. ---> Для моего установленного MySQL Server 8.0 я загружаю mysql-connector-java-8.0.20 в папку SoapUi / bin / ext или путь сборки проекта в eclipse. меня устраивает!!
Используйте версию 5.1.44 mysql-connector-java.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
Как я это исправил: Добавьте characterEncoding = utf8 в конец строки подключения jdbc
Например. connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_app?" + "user=root&password=root&characterEncoding=utf8");
Вы уверены, что используете Connector / J 8.0.11? Что возвращает
connection.getMetaData().getDriverVersion()?