MySQL с JDBC: нарушенная кодировка символов в строке часового пояса

#java #mysql #jdbc

#java #mysql #jdbc

Вопрос:

Я пытаюсь подключиться к серверу MySQL (локально размещенному) с помощью Java Connector. Я получаю исключение:

 The server time zone value 'Mitteleurop�ische Sommerzeit' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
  

Как вы можете видеть, значение часового пояса передается неправильно, в результате чего соединитель не понимает часовой пояс. Я попытался установить все возможные настройки в UTF-8 ( useUnicode=trueamp;characterEncoding=utf8 в URL-адресе JDBC character-set-server также установлено значение utf8 ). Чего мне здесь не хватает?

Комментарии:

1. Не могли бы вы добавить строку подключения, которую вы используете для подключения к MySQL, а также версию Connector / Jar, которую вы используете, чтобы иметь возможность помочь вам?

2. Строка подключения является jdbc:mysql://localhost/database?useSSL=falseamp;useUnicode=trueamp;characterEncoding=UTF-8 . Я добавил useUnicode и characterEncoding , чтобы попытаться исправить эту проблему, но это не помогло. Из того, что я понял, они не должны быть нужны. Версия Connector / J — 6.0.4.

Ответ №1:

Насколько я помню, сервер MySQL по умолчанию не использует UTF-8. Вы должны вручную установить атрибуты в my.cnf, чтобы они выглядели следующим образом:

 [client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
  

Это возможные расположения файла конфигурации в Linux:
/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

Комментарии:

1. набор символов по умолчанию и сервер набора символов уже установлены в utf8. Я установил для collaction-server значение utf8_unicode_ci, а также параметр init-connect, проблема по-прежнему сохраняется.

Ответ №2:

Как выясняется, это, скорее всего, вызвано не соединением между сервером MySQL и моим приложением, а связью между MySQL и ОС. Установка часового пояса вручную в конфигурации и не позволение ему «выяснить это» из ОС решает эту проблему.