Инициализация соединения
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Инициализация соединения
Здравствуйте.
Как мне сделать так, чтобы при каждом открытии нового соединения к базе данных (источник данных) движок отчета выполнял эту команду:
set time_zone='America/Bogota';
??
Как мне сделать так, чтобы при каждом открытии нового соединения к базе данных (источник данных) движок отчета выполнял эту команду:
set time_zone='America/Bogota';
??
Re: Инициализация соединения
Здравствуйте.
Движок не поддерживает данную функцию.
Движок не поддерживает данную функцию.
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Re: Инициализация соединения
Есть ли в планах?
Re: Инициализация соединения
Здравствуйте.
Таких планов нету. Как вариант вы можете добавить эту строку в ваши запросы.
Спасибо.
Таких планов нету. Как вариант вы можете добавить эту строку в ваши запросы.
Спасибо.
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Re: Инициализация соединения
Нашел другой путь.
В строке подключения к драйверу MySQL нужно указывать такую строку:
jdbc:mysql://127.0.0.1/mobilvendor2_main?user=root&password=pwd&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=true&serverTimezone=America/Bogota&sessionVariables=time_zone%3D%27America%2FBogota%27
где serverTimezone = America/Bogota и sessionVariables = time_zone='America/Bogota'
проблема в формировании строки подключения в классе StiMySqlDatabase.
Я формирую строку так:
а потом присваюваю классу MySQL так:
Проблема в том, что это не работает, видомо из-за символа "=" в параметре sessionVariables, который нужно экранировать, но я не знаю как.
Проверте, пожалуйста, как происходит формирование jdbc connection string из StiMySqlDatabase. Если сейчас движок отчета не поддерживает такой вид connectionString - пожалуйста, добавьте.
Спасибо.
В строке подключения к драйверу MySQL нужно указывать такую строку:
jdbc:mysql://127.0.0.1/mobilvendor2_main?user=root&password=pwd&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=true&serverTimezone=America/Bogota&sessionVariables=time_zone%3D%27America%2FBogota%27
где serverTimezone = America/Bogota и sessionVariables = time_zone='America/Bogota'
проблема в формировании строки подключения в классе StiMySqlDatabase.
Я формирую строку так:
Код: Выделить всё
StringBuilder reportConnection = new StringBuilder();
reportConnection.append("host=");
reportConnection.append((String)session.getAttribute("host"));
reportConnection.append(";database=");
reportConnection.append((String)session.getAttribute("database"));
reportConnection.append(";user=");
reportConnection.append((String)session.getAttribute("user"));
reportConnection.append(";password=");
reportConnection.append((String)session.getAttribute("password"));
reportConnection.append(";serverTimezone=America/Bogota");
reportConnection.append(";sessionVariables=\"time_zone='America/Bogota'\"");
Код: Выделить всё
((StiMySqlDatabase)database).setConnectionString(reportConnection.toString());
((StiMySqlDatabase)database).setUser((String)session.getAttribute("user"));
((StiMySqlDatabase)database).setPassword((String)session.getAttribute("password"));
Проверте, пожалуйста, как происходит формирование jdbc connection string из StiMySqlDatabase. Если сейчас движок отчета не поддерживает такой вид connectionString - пожалуйста, добавьте.
Спасибо.
Re: Инициализация соединения
Здравствуйте.
Используйте значение параметра без двойных кавычек
Используйте значение параметра без двойных кавычек
Код: Выделить всё
sessionVariables=time_zone='America/Bogota'
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Re: Инициализация соединения
Так:
не работает.
Временная зона на сервера не изменилась.
Код: Выделить всё
reportConnection.append("host=");
reportConnection.append((String)session.getAttribute("host"));
reportConnection.append(";database=");
reportConnection.append((String)session.getAttribute("database"));
reportConnection.append(";user=");
reportConnection.append((String)session.getAttribute("user"));
reportConnection.append(";password=");
reportConnection.append((String)session.getAttribute("password"));
reportConnection.append(";serverTimezone=America/Bogota");
reportConnection.append(";sessionVariables=time_zone='America/Bogota'");
Временная зона на сервера не изменилась.
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Re: Инициализация соединения
Если указываю неправильную временную зону, то ошибка показывается только, если в дизайнере соединения нажать на кнопку "Проверка".
В дизайнере при предпросмотре или во вьювере ошибки нет, как будто этот параметр игнорируется.
В дизайнере при предпросмотре или во вьювере ошибки нет, как будто этот параметр игнорируется.
Re: Инициализация соединения
Здравствуйте.
Мы исправили передачу параметров во вьювере и предпросмотре, попробуйте новые библиотеки:
https://drive.google.com/file/d/1SaMRIm ... sp=sharing
Мы исправили передачу параметров во вьювере и предпросмотре, попробуйте новые библиотеки:
https://drive.google.com/file/d/1SaMRIm ... sp=sharing
alexeyfressko писал(а):Если указываю неправильную временную зону, то ошибка показывается только, если в дизайнере соединения нажать на кнопку "Проверка".
В дизайнере при предпросмотре или во вьювере ошибки нет, как будто этот параметр игнорируется.
-
- Сообщения: 104
- Зарегистрирован: 17 фев 2015, 00:40
Re: Инициализация соединения
Работает.
Последний вопрос:
когда у меня есть запрос вида
то есть запрос, возвращающий данные в типе DateTime - то в отчете такая дата рендерится в соответствии с настройкой окружения Tomcat (то есть если я в MySQl передаю America/Bogota, но сервер настроен на UTC - все равно будет рендерится как UTC).
Есть ли способ заставить дату рендерится в разных временных зонах, без использования функций Mysql DATE_FORMAT??
Последний вопрос:
когда у меня есть запрос вида
Код: Выделить всё
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()) AS DATE
Есть ли способ заставить дату рендерится в разных временных зонах, без использования функций Mysql DATE_FORMAT??