2016-06-03 8 views
0

Ich habe sehr einfache Spring-Boot-App, die h2-Datenbank auf lokale verwendet. Ich habe schema-h2.sql, die unterhalb Skript hat -Spring Boot nicht korrekt erstellen?

CREATE TABLE USERS(
    userid NUMBER(10,0) AUTO_INCREMENT PRIMARY KEY, 
    email VARCHAR(256) UNIQUE NOT NULL, 
    fname VARCHAR(256), 
    lname VARCHAR(256) 
); 

Und in application-default.properties -

spring.h2.console.enabled=true 
spring.datasource.platform=h2 

spring.datasource.url=jdbc:h2:mem:testdb;MODE=MSSQLServer;DB_CLOSE_DELAY=-1;DB_CLO SE_ON_EXIT=false

Wenn ich/h2-Konsole aussehen, kann ich Siehe Tabelle, die erstellt wird, aber die eindeutige Einschränkung für die E-Mail-Spalte fehlt.

Ich habe sogar versucht alte Anweisung in schema-h2.sql Skript Hinzufügen von Abhängigkeit zu erstellen, aber das funktioniert auch nicht -

ALTER TABLE USERS ADD CONSTRAINT UQ_EMAIL UNIQUE(email); 

Auch wenn jene Skript in h2-Konsole ausführen, erstellt es eindeutige Einschränkung richtig Es scheint also etwas zu tun mit dem, wie der Frühling sie ausführt.

Beim Debuggen kann ich sehen, dass Alter-Anweisung ohne Ausnahme in der ScriptUtils-Klasse ausgeführt wird.

Nicht sicher, wie man das weiterbringt, damit jede Hilfe sehr geschätzt wird.

+0

Vergessen zu erwähnen, dass ich Spring-Boot v1.3.5 verwende – slad

+0

Kann jemand mit diesem helfen? – slad

Antwort

0

Für jeden anderen, der auf dieses Problem stieß, konnte ich es beheben, indem ich meine JPA-Anmerkung änderte. Durch das Hinzufügen des unique Parameters zusätzlich zu, das die Einschränkung in h2-schema.sql erstellt, konnte die Einschränkung tatsächlich erstellt werden.

@Column(name = "email", unique = true, nullable = false) 
private String email;