数据库从oracle迁移到pgsql,出现如下所示的异常:
字面意思理解到是pg库中没有all_sequences这个sequence的,但是你建上这个表之后,可能还会有别的错误,怎么解决呢?
报的错之中没有自己类相关的信息,所以考虑是框架的问题。
因为以前是oralce库,sequence是oracle的,所以全局搜索项目中存在不存在oracle的相关信息,结果在spring-context.xml中发现
<bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="ORACLE" p:showSql="true"/>
将其中的oralce属性修改为postgresql,问题解决。其实我是通过跟踪代码解决的。源码中有选择数据库的类型地方
异常:
2019-03-14 14:03:46,614 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] - HHH000299: Could not complete schema update
org.postgresql.util.PSQLException: ERROR: relation "all_sequences" does not exist
位置:28
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:301)
at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:264)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:231)
at com.alibaba.druid.pool.DruidPooledStatement.executeQuery(DruidPooledStatement.java:143)
at org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences(DatabaseMetadata.java:149)