2014-12-29 15 views
11

Açılışta uygulamayı açarken bir sonraki sorunum var. Wildfly uygulama sunucusu ve PostgreSQL kartuş kullanıyorum. Persistence.xml dosyasında "hibernate.hbm2ddl.auto" value = "update" özelliğini ayarlıyorumŞema güncellemesi tamamlanamadı: org.h2.jdbc.JdbcSQLException: Tablo "PG_CLASS" bulunamadı; SQL deyimi

org/ana/PostgreSQL wildfly modüller i wildfly kullanımı 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] 

I'am JPA (hazırda çekirdekli-4.3.6) gibi bir kullanımı hazırda görüyoruz. Ve ben Postgresql 9.2 ve 9.3 farklı bir sürümü ile bu sorunu bence herkes bana açıklıklı dialect 9.2 Postgres sürümünde değiştirmek veya posthresql kütüphane modülünü openshift üzerinde değiştirmek nasıl açıklayabilir miyim?

+0

Bu sorgu 'relqind = 'S' ', postgresql'nin hemen hemen her sürümü için Tamam'ın çalışması gereken pg_class'dan relname seçin. Hata mesajının büyük harfli tablo adını rapor etmesi gerçeği şüpheli görünüyor. – harmic

+0

@Klimov Piter Tablo "pg_catalog" olarak adlandırılır. "Pg_class" 'çoğu kesinlikle" PG_CLASS "' PG_CLASS 'genellikle kabul edilebilir olsa da, alıntı işaretleri uppser durumunu önemli kılar ve tamamen hybernate geliştiricilerine güvenmiyorum Tablo ismine sahte alıntı işaretleri ekleyerek hata mesajını gizlemek için kullanılır. Postgres sunucu günlüğünde eşleşen bir hata olmalıdır. Bu soruyu lütfen ekleyebilecek misiniz? – Jasen

+1

@Jasen çok teşekkürler! Hibernate.hbm2ddl.auto = "update" için hazırda bekletme özelliği dosyasını "create" olarak değiştiririm ve bu sorun çözülmüşse lütfen buradaki çözümünüzü (yanıt olarak) bir hafta içinde kabul edersiniz –

cevap

5

Yakın zamanda aynı hatayı aldım. (Kullandığınız hangisi veya bağımsız-full.xml veya) wildfly en standalone.xml açıp bulup aşağıdaki kesimi silin:

<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"/> 

Önemli: wildfly aşağı düzenlemeden önce kapatmaya emin olun, aksi takdirde üzerine yazacaktır Bir dahaki sefere kapanır.

+0

Bu neden çalışıyor? – Felk

+0

İyi Soru! Dürüst olmak gerekirse - emin değilim. Bu varsayılan DS'nin, bu uygulama sunucusundaki dağıtımların db bağlantı ayarlarını kısmen geçersiz kıldığı anlaşılıyor. Daha fazla kazmadım, ancak çalıştıktan sonra ... – Toastor

5

Değer yaratmak için hazırda bekletme özelliğini hibernate.hbm2ddl.auto değiştirdim. Bu benim için sorun çözüldü.

1

1) Bu özellik spring.jpa.database-platform gerek spring.jpa.hibernate.ddl-auto

0

değerini sen application.properties

spring.jpa.database-platform 
doğru lehçesini kullanıp kullanmadığınızı kontrol) ve check = org .hibernate.dialect.H2Dialect

İlgili konular