java.sql.SQLException: The server time zone. MySQL 8

148
31 марта 2019, 23:30

Использую MySQL 8 на ОС Windows 10. версия коннектора 8.0.12. Создаю простое подключение к базе:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    public class TestConnection {
        public static void main(String[] args) {
            Connection connection = null;
            try {
                Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
                StringBuilder url = new StringBuilder();
                url.
                        append("jdbc:mysql://").
                        append("localhost:").
                        append("3306/").
                        append("test?").
                        append("user=root&").
                        append("password=root");
                connection = DriverManager.getConnection(url.toString());
            } catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

В итоге получаю: java.sql.SQLException: The server time zone value 'Ôèíëÿíäèÿ (çèìà)' 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.

Пожалуйста, помогите исправить или подскажите куда копать.

Answer 1

Достаточно сунуть текст ошибки в Google Translate, чтобы понять куда копать. Ну и кракозябры могли бы навести на мысль. Вам сервер MySQL использует какую-то ересь вместо часового пояса.

Правильный способ - это исправить настройки MySQL:

SET GLOBAL time_zone = 'Europe/Moscow';

Более простой - задать часовой пояс на уровне устанавливаемого подключения, передав в URL соответствующий параметр

url.append("jdbc:mysql://")
   .append("localhost:")
   .append("3306/")
   .append("test?")
   .append("user=root&")
   .append("password=root")
   .append("serverTimezone=UTC");
READ ALSO
Ищу аналог пробела в юникоде

Ищу аналог пробела в юникоде

Вы знали что можно использовать кириллицу при названии переменных в java?

189
JDBC Bath - ERROR Batch entry 295 <unknown> was aborted: Возвращено слишком много результатов обновления. В чем проблема?

JDBC Bath - ERROR Batch entry 295 <unknown> was aborted: Возвращено слишком много результатов обновления. В чем проблема?

Есть много одинаковых запросов insert, и для ускорения выполнения этих процессов, я хочу использовать statementexecuteBatch();

155
Приложение на Java для работы с БД [закрыт]

Приложение на Java для работы с БД [закрыт]

Я новичок в java программировании и совсем недавно начал изучать javaПростые вещи на java понятны (такие как создание классов, условия, циклы, коллекции,...

157
Метод вывести массив в консоль с использованием дженериков [закрыт]

Метод вывести массив в консоль с использованием дженериков [закрыт]

Необходимо реализовать метод с использованием обобщенных параметров типа, который в качестве аргумента будет принимать массив и выводить...

175