web-dev-qa-db-ja.com

スキーマの更新を完了できませんでした:org.h2.jdbc.JdbcSQLException:テーブル "PG_CLASS"が見つかりません。 SQLステートメント

Openshiftにアプリケーションをデプロイするときに次の問題が発生します。私はwildflyアプリケーションサーバーとPostgreSQLカートリッジを使用しています。

Persistence.xmlで、プロパティ "hibernate.hbm2ddl.auto" value = "update"を設定します。 org/main/postgresqlのwildflyモジュールで、wildflyがpostgresql-9.3-1102-jdbc41.jarを使用していることがわかります。

12:12:14,760 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 62) HHH000319: Could not get database metadata: org.h2.jdbc.JdbcSQLException: Table "PG_CLASS" not found; SQL statement:
select relname from pg_class where relkind='S' [42102-173]
        at org.h2.message.DbException.getJdbcSQLException(DbException.Java:331)
        at org.h2.message.DbException.get(DbException.Java:171)
        at org.h2.message.DbException.get(DbException.Java:148)
        at org.h2.command.Parser.readTableOrView(Parser.Java:4864)
        at org.h2.command.Parser.readTableFilter(Parser.Java:1107)
        at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.Java:1713)
        at org.h2.command.Parser.parseSelectSimple(Parser.Java:1821)
        at org.h2.command.Parser.parseSelectSub(Parser.Java:1707)
        at org.h2.command.Parser.parseSelectUnion(Parser.Java:1550)
        at org.h2.command.Parser.parseSelect(Parser.Java:1538)
        at org.h2.command.Parser.parsePrepared(Parser.Java:405)
        at org.h2.command.Parser.parse(Parser.Java:279)
        at org.h2.command.Parser.parse(Parser.Java:251)
        at org.h2.command.Parser.prepareCommand(Parser.Java:218)
        at org.h2.engine.Session.prepareLocal(Session.Java:428)
        at org.h2.engine.Session.prepareCommand(Session.Java:377)
        at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.Java:1138)
        at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.Java:72)
        at org.jboss.jca.adapters.jdbc.WrappedStatement.executeQuery(WrappedStatement.Java:344)
        at org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences(DatabaseMetadata.Java:178) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.tool.hbm2ddl.DatabaseMetadata.<init>(DatabaseMetadata.Java:92) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.tool.hbm2ddl.DatabaseMetadata.<init>(DatabaseMetadata.Java:84) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.Java:196) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.Java:178) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.Java:522) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1859) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:852) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:845) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.Java:398) [hibernate-core-4.3.7.Final.jar:4.3.7.Final]
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.Java:844) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
        at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.Java:44) [jipijapa-hibernate4-3-1.0.1.Final.jar:]
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.Java:154) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.Java:117) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
        at Java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_05]
        at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.Java:474) [wildfly-security-manager-1.0.0.Final.jar:1.0.0.Final]
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.Java:182) [wildfly-jpa-8.2.0.Final.jar:8.2.0.Final]
        at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142) [rt.jar:1.8.0_05]
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617) [rt.jar:1.8.0_05]
        at Java.lang.Thread.run(Thread.Java:745) [rt.jar:1.8.0_05]
        at org.jboss.threads.JBossThread.run(JBossThread.Java:122) [jboss-threads-2.1.1.Final.jar:2.1.1.Final]

私はJPA(hibernate-core-4.3.6)としてHibernateを使用しています。そして、Postgresql 9.2と9.3の異なるバージョンでのこの問題は、9.2 Postgresバージョンで休止状態の方言を変更する方法やopenshiftでpostgresqlライブラリモジュールを変更する方法を誰かに説明できますか?

15
Klimov Peter

最近同じエラーが発生しました。 wildflyのstandalone.xml(またはstandalone-full.xmlまたは使用している方)を開き、次のフラグメントを見つけて削除してください。

<default-bindings contextservice="Java:jboss/ee/concurrency/context/default" datasource="Java:jboss/datasources/ExampleDS" jms-connection factory="Java:jboss/DefaultJMSConnectionFactory" managed-executor-service="Java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="Java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="Java:jboss/ee/concurrency/factory/default"/>

重要:編集する前に必ずwildflyをシャットダウンしてください。そうしないと、次にシャットダウンしたときに変更が上書きされます。

8
Toastor

Hibernateプロパティを変更するだけですhibernate.hbm2ddl.auto価値を創造する。これで問題は解決しました。

8
Klimov Peter

このプロパティが必要ですspring.jpa.database-platform = org.hibernate.dialect.H2Dialect

3
Paul Hilliar

1)application.propertiesで正しい方言を使用しているかどうかを確認します

spring.jpa.database-platform

2)spring.jpa.hibernate.ddl-autoの値を確認します

0
Dheeraj Pure

spring.jpa.database-platformが私の問題を解決しました

0
skuarch