Połączenie z Oracle zdaje się działać wybiórczo

0

Hej
Zainstalowałem sobie lokalnie bazę danych Oracle, której chcę używać w mojej aplikacji Spring boot.
Ustawiłem taką konfigurację:

spring:
  datasource:
    driver-class-name: oracle.jdbc.driver.OracleDriver
    url: "jdbc:oracle:thin:@localhost:1521:xe"
    username: "SYSTEM"
    password: "oracle"

Moje migracja Flyway przechodzi bez problemu i tworzy pierwszą tabelę w bazie:

create table USERS
(
  id                VARCHAR2(40 CHAR)   not null,
  name              VARCHAR2(64 CHAR)   not null,
  surname           VARCHAR2(64 CHAR)   not null,
  login             VARCHAR2(32 CHAR)   not null,
  password          VARCHAR2(32 CHAR)   not null,
  email             VARCHAR2(64 CHAR)   not null
)
TABLESPACE USERS_DAT;

Niestety gdy próbuję wykonać jakiekolwiek zapytanie do bazy danych (np. metoda save() z UserRepository) to dostaję bardzo długi wyjątek, który kończy się:

SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement
Caused by: oracle.jdbc.OracleDatabaseException: ORA-00942: tabela lub perspektywa nie istnieje

Najprawdopodobniej mam coś źle z dostępem do tej bazy, tylko dlaczego migracja na tym samym configu przeszła?

1

Zakładam się o piwo że chodzi o te

TABLESPACE USERS_DAT;
0
AlfonsŚciborek napisał(a):

Zainstalowałem sobie lokalnie bazę danych Oracle, której chcę używać w mojej aplikacji Spring boot.

Ale sam sobie tak robisz?
Pewnie coś porąbałeś ze schematem na którym jest założona tabela, i użytkownik, który próbuje się łączyć z aplikacji nie ma do niej dostępu.
Najszybciej dojdziesz do tego co jest nie tak, jak sobie wyświetlisz zapytanie jakie leci do db spring.jpa.show-sql=true

2

Po pierwsze primo: username: "SYSTEM" - ten użytkownik służy do zadań administracyjnych, nie tworzy się tam żadnych obiektów.
Skoro masz wersję XE, to powinien być tam użytkownik HR - z tego skorzystaj, albo utwórz sobie nowego (z poziomu użytkownika SYSTEM).

Sprawdziłem nawet czy USERS to nie słowo zastrzeżone, ale nie (ale USER już tak), więc to raczej nie kwestia nazewnictwa.

Ściągnij sobie SQL Developer od Oracle, podłącz się do tej bazy i zobacz czy ta tabela w ogóle powstaje. Może wywala błędem przy CREATE TABLE, ale go nie widzisz? Skoro użyłeś tablespace USERS_DAT, to wcześniej go utworzyłeś, tak? TAK? :)

Tablespace jest opcjonalny przy tworzeniu tabeli, więc na razie to pomiń - baza wybierze domyślny dla użytkownika.

I nie używaj SYSTEM!

1 użytkowników online, w tym zalogowanych: 0, gości: 1