Datenbank und Application Konsistents

Raphael_

Aktives Mitglied
Hi, ich habe eine Spring Boot Anwendung und eine Postgresql. Dort habe ich ein Feld, das so aussieht:

Java:
@Column(name = "stockType")
    private StockType stockType;

Stock Type schaut so aus:

Code:
@Getter
public enum StockType {
    BTCUSDT(),
    ETHUSDT()
}

Mein Problem ist, dass wenn ich einen neuen Enum Wert zu StockType hinzufüge also das es bspw so aussieht:

Code:
@Getter
public enum StockType {
    BTCUSDT(),
    ETHUSDT(),
    XRPUSDT(),
}

Und das dann versuche das in der Datenbank zu speichern bekomme ich einen 500er Statuscode. Um das dann zu lösen muss ich dann die Datenbank komplett löschen und neu erstellen, weil dann scheinbar meine Db mit der Application von den Daten her wieder übereinstimmt.
Gibt es da irgendeine einfache Lösung? Ich habe in meiner yml bereits das hier versucht:

Code:
ddl-auto: create

aber dann habe ich das Problem, dass die Daten nach dem Neustart wieder gelöscht werden und das möchte ich auch nicht...
 
Die entsprechende Ausnahme auf der Server-Seite geworfen wird (und dann zu dem 500er fuehrt) anzusehen waere auf jeden Fall eine gute Idee.
Stimmt, das steht in der Konsole:


Java:
org.postgresql.util.PSQLException: ERROR: new row for relation "stocks" violates check constraint "stocks_stock_type_check"
  Detail: Failing row contains (50.0000000000, 0.0000001500, 0, 9, 1, 52, 2024-04-20 21:54:02.279636).
 
Nein, man bekommt automatisch einen 400er, wenn man einen Wert reinreicht, der nicht in dem Enum steht. Wenn ich einen Wert aber hinzufüge und die Db nicht lösche kommt es zu einem 500er, weil er das nicht kennt und das verstehe ich nicht, weil ich eigentlich keine Beschränkungen eingerichtet habe... Es fehlt also (ich gehe mal davon aus in der application.yml) zu beschreiben, dass bei jedem Start das db schema geupdatet werden soll...
 

Neue Themen


Zurück
Oben