SpringBoot项目本地启动报错:ResultSet中未找到INDEX_NAME列
问题描述
我有一个SpringBoot项目,该项目在其他两台电脑上均可正常运行,但在我的本地电脑启动时失败,报错信息为**"The column name INDEX_NAME was not found in this resultset"**(中文:结果集中未找到列名INDEX_NAME)。推测是无法读取数据库表的索引,使用的数据库为PostgreSQL,已尝试重装数据库甚至格式化电脑后重新部署,问题仍未解决。
错误栈信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JaversFromStarter' defined in class path resource [org/javers/spring/boot/sql/JaversSqlAutoConfiguration.class]: Invocation of init method failed; nested exception is org.polyjdbc.core.exception.SchemaInspectionException: [INDEX_LOOKUP_ERROR] Failed to obtain relation index list when looking for indexes for relation jv_global_id at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.21.jar:5.3.21] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.21.jar:5.3.21] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.1.jar:2.7.1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) ~[spring-boot-2.7.1.jar:2.7.1] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.1.jar:2.7.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.1.jar:2.7.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-2.7.1.jar:2.7.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-2.7.1.jar:2.7.1] at com.provera.taskmanapi.TaskmanapiApplication.main(TaskmanapiApplication.java:16) ~[classes/:na] Caused by: org.polyjdbc.core.exception.SchemaInspectionException: [INDEX_LOOKUP_ERROR] Failed to obtain relation index list when looking for indexes for relation jv_global_id at org.polyjdbc.core.schema.SchemaInspectorImpl.indexExists(SchemaInspectorImpl.java:115) ~[polyjdbc-0.7.6.jar:na] at org.javers.repository.sql.schema.JaversSchemaManager.addIndex(JaversSchemaManager.java:336) ~[javers-persistence-sql-6.6.5.jar:na] at org.javers.repository.sql.schema.JaversSchemaManager.addDbIndexOnOwnerId(JaversSchemaManager.java:100) ~[javers-persistence-sql-6.6.5.jar:na] at org.javers.repository.sql.schema.JaversSchemaManager.ensureSchema(JaversSchemaManager.java:59) ~[javers-persistence-sql-6.6.5.jar:na] at org.javers.repository.sql.JaversSqlRepository.ensureSchema(JaversSqlRepository.java:186) ~[javers-persistence-sql-6.6.5.jar:na] at org.javers.spring.jpa.JaversTransactionalJpaDecorator$1.doInTransactionWithoutResult(JaversTransactionalJpaDecorator.java:64) ~[javers-spring-jpa-6.6.5.jar:na] at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:36) ~[spring-tx-5.3.21.jar:5.3.21] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.21.jar:5.3.21] at org.javers.spring.jpa.JaversTransactionalJpaDecorator.ensureSchema(JaversTransactionalJpaDecorator.java:61) ~[javers-spring-jpa-6.6.5.jar:na] at org.javers.spring.jpa.JaversTransactionalJpaDecorator.afterPropertiesSet(JaversTransactionalJpaDecorator.java:55) ~[javers-spring-jpa-6.6.5.jar:na] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.21.jar:5.3.21] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.21.jar:5.3.21] ... 16 common frames omitted Caused by: org.postgresql.util.PSQLException: 此结果集中未找到列名INDEX_NAME。 at org.postgresql.jdbc.PgResultSet.findColumn(PgResultSet.java:2957) ~[postgresql-42.3.6.jar:42.3.6] at org.postgresql.jdbc.PgResultSet.getString(PgResultSet.java:2814) ~[postgresql-42.3.6.jar:42.3.6] at com.zaxxer.hikari.pool.HikariProxyResultSet.getString(HikariProxyResultSet.java) ~[HikariCP-4.0.3.jar:na] at org.polyjdbc.core.schema.SchemaInspectorImpl.indexExists(SchemaInspectorImpl.java:107) ~[polyjdbc-0.7.6.jar:na] ... 27 common frames omitted
解决方案
- 统一PostgreSQL版本:对比其他正常运行电脑的PostgreSQL版本,将本地数据库版本调整一致。旧版本的polyjdbc(如0.7.6)在查询索引时依赖
INDEX_NAME字段,而高版本PostgreSQL中该字段已改为小写的indexname,版本不匹配会导致字段找不到。 - 升级依赖版本:当前使用的javers-persistence-sql 6.6.5和polyjdbc 0.7.6兼容性有限,升级到Javers 7.x及以上版本,对应的polyjdbc版本会同步更新,适配PostgreSQL的字段名变更。
- 关闭自动Schema初始化并手动创建索引:在
application.properties中添加配置关闭Javers自动创建Schema:
然后手动在javers.sql.schema-management-enabled=falsejv_global_id表上创建所需索引,确保结构与其他环境一致。 - 检查连接配置差异:确认本地数据库连接URL的参数(如时区、字符集、数据库版本适配参数)与其他环境完全一致,避免因配置差异导致查询结果字段名异常。
内容的提问来源于stack exchange,提问作者Lorentrs
相关产品推荐
相关产品推荐

