将 Grails 从 3.3.2 升级到 3.3.9 时出现问题:由于 H2 升级,启动时出现异常 "Unable to create initial connections of pool"
Problem upgrading Grails from 3.3.2 to 3.3.9: Exeption on startup "Unable to create initial connections of pool" due to H2 upgrade
我从 GRAILS 3.3.2 升级到 3.3.9 后启动时出现以下错误:
org.apache.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
org.h2.jdbc.JdbcSQLException: Scale($"10") must not be bigger than precision({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: create ** 然后一切正常。我还对创建的架构进行了比较,它与我实际数据库中的架构相同。
我还测试了 GRAILS 3.3.5 会发生中断。我查看了发布的内容,没有找到任何会导致此行为的内容。
有人能指出我正确的方向吗?我的数据库中的数据是否存在问题(不知何故发生了无效插入或其他问题)或者这是由其他原因引起的。
编辑
与H2升级到1.4.197版本有关。简单的解决方法是通过在 build.gradle
中设置以前的版本来降级
runtime "com.h2database:h2:1.4.196"
问题很严重 sql 由于早期 H2 版本中的错误,该问题未得到正确验证。由于某种原因,模式包含一个语句,其中 scale > precision
:
_TIME TIMESTAMP(23, 10)
通过数据库转换修复了它。
我从 GRAILS 3.3.2 升级到 3.3.9 后启动时出现以下错误:
org.apache.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
org.h2.jdbc.JdbcSQLException: Scale($"10") must not be bigger than precision({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: create ** 然后一切正常。我还对创建的架构进行了比较,它与我实际数据库中的架构相同。
我还测试了 GRAILS 3.3.5 会发生中断。我查看了发布的内容,没有找到任何会导致此行为的内容。
有人能指出我正确的方向吗?我的数据库中的数据是否存在问题(不知何故发生了无效插入或其他问题)或者这是由其他原因引起的。
编辑
与H2升级到1.4.197版本有关。简单的解决方法是通过在 build.gradle
中设置以前的版本来降级runtime "com.h2database:h2:1.4.196"
问题很严重 sql 由于早期 H2 版本中的错误,该问题未得到正确验证。由于某种原因,模式包含一个语句,其中 scale > precision
:
_TIME TIMESTAMP(23, 10)
通过数据库转换修复了它。