Проблема обновления Grails с 3.3.2 до 3.3.9: Исключение при запуске «Невозможно создать начальные соединения пула» из-за обновления H2 - PullRequest
0 голосов
/ 03 января 2019

При запуске после обновления GRAILS 3.3.2 до 3.3.9 появляется следующая ошибка:

org.apache.tomcat.jdbc.pool.ConnectionPool: Невозможно создать начальные соединенияpool.
org.h2.jdbc.JdbcSQLException: Масштаб ($ "10") не должен быть больше точности ({1});

({1}); SQL statement:
CREATE CACHED TABLE PUBLIC.GAME(
ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_6AFE1F30_C0FB_47AD_B2B5_FD6A519957AE) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_6AFE1F30_C0FB_47AD_B2B5_FD6A519957AE SELECTIVITY 100,
VERSION BIGINT NOT NULL SELECTIVITY 3,        
...
FINALROI DOUBLE SELECTIVITY 76,
STATUS VARCHAR DEFAULT 'FINISHED' NOT NULL SELECTIVITY 1
) [90051-197]

Эта проблема возникает только при использованиисуществующая база данных H2 (которая содержит много данных).Я проверил с настройкой ** dbCreate: создать **, и все работает хорошо тогда.Я также провел сравнение созданной схемы, и она была идентична той, что была в моей реальной БД.

Я также проверял, что разрыв происходит с GRAILS 3.3.5.Я просмотрел содержание релиза и не смог найти ничего, что могло бы вызвать такое поведение.

Может ли кто-нибудь указать мне правильное направление?Есть ли проблема с данными в моей базе данных (произошла неправильная вставка или что-то в этом роде) или это вызвано чем-то другим?

РЕДАКТИРОВАТЬ

Имеет отношение к обновлению H2 до версии 1.4.197.Простой обходной путь - сделать даунгрейд, установив предыдущую версию в build.gradle

runtime "com.h2database:h2:1.4.196"             

1 Ответ

0 голосов
/ 05 января 2019

Проблема была в плохом sql, который не был должным образом проверен из-за ошибки в более ранних версиях H2. По какой-то причине схема содержала инструкцию, где scale > precision:

_TIME TIMESTAMP(23, 10)

Исправлено это с преобразованием БД.

...