SpringBoot -> Heroku Error executing DDL via JDBC Statement

0 értékelés
731 megtekintés
Sztyopu Haladó Felhasználó (117 pont) kérdezte 2019. Szep 9.

Sziasztok! Az SFJ videók / SpringBoot II. / 02. videónál elakadtam.

Itt a külső adatbázishoz(Heroku) kellene csatlakozni. 

(A youtube hozzászólásokból kiderült egy néhányunknak gondja van ezzel a résszel, itt a fórumon is volt hasonló kérdés, de nem sikerült megtalálnom a választ.)

A kód lefut H2-es adatbázissal. 

Megtalálja a Heroku adatbázist, mert létrehozza a táblákat.

Ha az init() metódussal akarom feltölteni az adatbázist, a kódból az működik.

Két hibaüzenetet is kapok 

az első:

java.lang.reflect.InvocationTargetException: null - ha az  apllication.properties fájlba beszúrom a 

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false sort ez a hiba megszűnik. (Ez a tipp youtube kommentek között volt)

a második: 

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table story drop constraint FKsff6u62ssfrfdb4gk7s38xnhx" via JDBC Statement

Nem tudom mennyire van köze hozzá, de az Entity-k nél az anotációt így kellett felírnom @GeneratedValue(strategy=GenerationType.IDENTITY) a sima @GeneratedValue nem működött.

Azt vettem észre, hogy ha már a kódból töltöttem adatot a táblákba akkor lefut a program hiba nélkül, viszont adat akkor sem töltődik bele, mintha nem is látná a data.sql fájlt.

A hiba hosszabban:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table story drop constraint FKsff6u62ssfrfdb4gk7s38xnhx" via JDBC Statement

at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:359) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.applyConstraintDropping(SchemaDropperImpl.java:331) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:230) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:154) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:126) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:112) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:144) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final]

at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.1.8.RELEASE.jar:5.1.8.RELEASE]

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.1.8.RELEASE.jar:5.1.8.RELEASE]

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390) ~[spring-orm-5.1.8.RELEASE.jar:5.1.8.RELEASE]

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377) ~[spring-orm-5.1.8.RELEASE.jar:5.1.8.RELEASE]

...

1 Válasz

0 értékelés
g13t4 Haladó Felhasználó (246 pont) válaszolta meg Jan 12.

A 2. hibára van gyógymód :)

pom.xml-ben vedd ki a <scope>-t, és <version>-t tégy be helyette:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4.1212</version>
</dependency>

application.properties-ben: 

  • egy sor nincs a githubon közzétett forrásban, másold be:
spring.datasource.initialization-mode=always
  • az első két & közötti hiányzott sslmode=require
...&sslmode=require&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
  • kötőjeles-kiskezdőbetűs írásmód kell a .driverClasName helyett
spring.datasource.driver-class-name=org.postgresql.Driver

Ennyi :)

Sztyopu Haladó Felhasználó (117 pont) szólt hozzá Jan 12.
Kösz. Később kipróbálom.
g13t4 Haladó Felhasználó (246 pont) szólt hozzá Jan 13.
Ok.
Még annyi, hogy a project ilyen szintű változtatásánál a zöld háromszöggel nem fog _elsőre_ elindulni, csak Run As/Spring Boot App-al.
Okát nem tudom, majd valaki okosabb elmondja, hogy miért :)
...