gpt4 book ai didi

java - 为什么 postgresql 使用错误版本的驱动程序?

转载 作者:行者123 更新时间:2023-12-02 11:36:04 25 4
gpt4 key购买 nike

我正在运行 postgresql 版本 9.2,当从数据库查询表时,我收到此错误:

Caused by: org.hibernate.exception.SQLGrammarException: could not get table metadata: ACCOUNTINGINFO
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata.getTableMetadata(DatabaseMetadata.java:128)
at org.hibernate.cfg.Configuration.generateSchemaUpdateScript(Configuration.java:1202)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean$1.doInHibernate(LocalSessionFactoryBean.java:946)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407)
... 118 more
Caused by: org.postgresql.util.PSQLException: ERROR: column t1.tgconstrname does not exist
Position: 113
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:283)
at org.postgresql.jdbc2.AbstractJdbc2DatabaseMetaData.getImportedExportedKeys(AbstractJdbc2DatabaseMetaData.java:3552)
at org.postgresql.jdbc2.AbstractJdbc2DatabaseMetaData.getImportedKeys(AbstractJdbc2DatabaseMetaData.java:3745)
at org.apache.commons.dbcp.DelegatingDatabaseMetaData.getImportedKeys(DelegatingDatabaseMetaData.java:314)
at org.hibernate.tool.hbm2ddl.TableMetadata.initForeignKeys(TableMetadata.java:161)
at org.hibernate.tool.hbm2ddl.TableMetadata.<init>(TableMetadata.java:60)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata.getTableMetadata(DatabaseMetadata.java:113)
... 121 more

看起来查询是由jdbc2而不是jdbc4执行的:

at 

org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)

根据我的调查,tgconstrname 列在 postgresql 8.4 版本中不再存在,但如何防止此错误?如何配置postgresql使用jdbc4作为驱动包?

最佳答案

这就是驱动程序的构建方式。您拥有 JDBC2 中包含的功能,然后您还拥有更高版本中包含的其他功能。诸如元数据之类的东西已经在 J​​DBC2 中实现了,包名称也反射(reflect)了这一点。

您可以领取newer driver仍然可以看到 org.postgresql.jdbc2 类。您没有指出驱动程序的版本,但我建议您在使用时获取更新的驱动程序。它们向后兼容,因此最新的可以在 9.2 上正常工作。您当前的驱动程序似乎已过时。

关于java - 为什么 postgresql 使用错误版本的驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48922923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com