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

Java 为什么postgresql使用错误版本的驱动程序?,java,postgresql,driver,Java,Postgresql,Driver,我正在运行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.exce

我正在运行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
据我调查,postgresql的8.4版不再存在TGCONSTRONAME列,但如何防止此错误?
如何配置postgresql以使用jdbc4作为驱动程序包?

驱动程序就是这样构建的。您拥有JDBC2中包含的特性,然后在更高版本中包含其他特性。元数据之类的东西已经在JDBC2中实现了,包名反映了这一点


您可以选择一个类,仍然可以在那里看到
org.postgresql.jdbc2
类。您没有指明驱动程序的版本,但我建议您在使用时使用更新的驱动程序。它们是向后兼容的,因此最新的一款适用于
9.2
。您当前的驱动程序似乎已过时。

不包括旧的驱动程序?此错误如何?-->列t1.tgconstrname不存在…您使用的(旧)驱动程序与您的Postgres版本不匹配
at 

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