#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 и ОС. Установка часового пояса вручную в конфигурации и не позволение ему «выяснить это» из ОС решает эту проблему.