Spring Boot Heroku postgreSQL - relation "story" does not exist

0 értékelés
689 megtekintés
sgab (2 pont) kérdezte 2018. Jún 14.
Sziasztok!

https://www.youtube.com/watch?v=bRz0fDXtet8&list=PLyriihBWoulxdsrKphv-dN022imGHDizM&index=2

A Spring Boot Ismeretek II. 02. Külső adatbázis részt csinálnám, de folyamatosan az alábbi hibát kapom:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement

...

Caused by: org.postgresql.util.PSQLException: ERROR: relation "story" does not exist

Mi a megoldás? Már egy csomó mindent kipróbáltam, de nem tudok rájönni...

Spring Boot 2.0.2.Release-t használok.

Köszönettel:

Sgab
sgab (2 pont) szólt hozzá 2018. Jún 14.
Azt még elfelejtettem megírni, hogy H2-vel tökéletesen megy...
sgab (2 pont) szólt hozzá 2018. Jún 15.
Próbáltam egy helyi PostgreSQL adatbázissal is, de ugyanaz az eredmény...


@Entity
public class Story {
    @Id
    @GeneratedValue
    private Long id;
    ...
    @ManyToOne
    private Blogger blogger;
    ...
}

@Entity
public class Blogger {
    @Id
    @GeneratedValue
    private Long id;
    ...
    @OneToMany(mappedBy = "blogger")
    private List<Story> stories;
    ...
}


application.properties:

spring.thymeleaf.cache=false
spring.mvc.locale-resolver=fixed
#spring.mvc.locale=en

# ======================================
# DATABASE
# ======================================

# H2
#spring.h2.console.enabled=true
#spring.h2.console.path=/db

# PostgreSQL
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/TestDB
spring.datasource.username=postgres
spring.datasource.password=

# ======================================
# JPA / HIBERNATE
# ======================================

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

# Fix Postgres JPA Error:
# Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented.
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
sgab (2 pont) szólt hozzá 2018. Jún 17.
sgab ismét látható 2018. Jún 17.
Az érdekes az az, hogy a táblákat létrehozza (local PG-ben), bár a hiba üzenet továbbra is megjelenik a konzolon.

Ha a StoryService osztályból töltöm fel az adatokat, akkor azok is megjelennek az adatbázisban:
    @PostConstruct
    public void init() {
        Blogger blogger = new Blogger("BelsőGyula");
        bloggerRepo.save(blogger);
       
        Story story = new Story("Belső Cím", "Belső Tartalom", blogger);
        storyRepo.save(story);
    }

De ha a data.sql állományból szeretném feltölteni az adatokat, akkor azok már nem jelennek meg.
sgab (2 pont) szólt hozzá 2018. Jún 17.
Viszont az adatok hiába vannak benne. A weboldal nem jelenik meg:
Exception evaluating SpringEL expression: "story.title"

1 Válasz

0 értékelés
David (4 pont) válaszolta meg 2018. Jún 27.
David szerkesztett 2018. Jún 27.

hat nekem is ez a problemam probald meg at nevezni a tablat

@Entity

@Table(name="stories")
public class Story {
    @Id
    @GeneratedValue
    private Long id;
    ...
    @ManyToOne
    private Blogger blogger;
    ...
}

remelem seikerul 

vagy a pom.xml be

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.7.RELEASE</version>

<relativePath /> <!-- lookup parent from repository -->

</parent>

ezt a parentet hasznald  vagy eleg csak ha a release-t at irod erre a versiora es jo lesz ja es a nezet html-ed et nezd meg van e benne lezaro </html> ha nincs rakj bele

sgab (2 pont) szólt hozzá 2018. Jún 28.
A tábla nevének megadása, az az adatbázisra vonatkozik, hogy más legyen a neve mint az entitásnak.
@Table(name="stories")

Ha használod ezt az annotációt, akkor a data.sql állományban is STORIES-ként kell megadni a tábla nevét.


Természetesen, ha leveszed a Spring Boot verziót a POM.xml-ben, akkor jó.
De én a friss verziót szeretném használni (jelenleg 2.0.3.RELEASE).

Minden esetre köszönöm a segítő szándékot !!! :-)
David (4 pont) szólt hozzá 2018. Jún 28.
igen tudom hogy annak csak postgresql neha cseszekszik a kis nagy betukel a tablazat neveiben hát ha meg lesz a válasz kivancsi lennek rá én is  :DDD

talan ezt probald meg meg:
spring.jpa.properties.hibernate.default_schema=${your-default-schema-name}

bar szerintem ezeken mar tul vagy :D
sgab (2 pont) szólt hozzá 2018. Jún 28.
sgab szerkesztett 2018. Jún 28.
Igen ezeket már próbáltam (bár én annotációval adtam meg a séma nevét). :-)

Szedtem le példa alkalmazásokat és ha 1.5.X verziós volt a Spring Boot, akkor amint átírtam 2.0.X verzióra, ugyan ilyen hibát kaptam.
Volt olyan is, hogy MySQL-el ment simán és amikor átállítottam a PostgreSQL-re, akkor ismét nem találta a relációt. Bár itt csak az egy irányú reláció volt megadva.
Ha a két irányú relációt használtam volna a MySQL-nél, akkor ott se találta a relációt !!!

Igazából tovább léptem a tanulásban, DE azért nagyon jó volna rájönni, hogy mi lehet a baj.
Hátha másnak sikerül vagy rájön a megoldásra...
...