2016-04-13 11 views
2

Ich versuche, eine Datenbank zu erstellen, um meine Aufgaben in der Wiedergabe zu behandeln! Rahmen.Spielen! Framework-Datenbank Skript-Anwendung Fehler

Hier ist, was ich habe:

In build.sbt:

libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    evolutions, 
    "com.typesafe.play" %% "anorm" % "2.5.0", 
    "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.0-RC1" % Test 
) 

In conf/evolutions/default/1.sql:

default.driver = org.h2.Driver 
default.url = "jdbc:h2:mem:play" 

Ich anorm in meinem app/models/Task.scala den Import und die Definition einer Aufgabe wie:

import anorm._ 
import anorm.SqlParser._ 

case class Task(id: Int, name: String, description: String, group: String)

Und das ist in meinem conf/evolutions/default/1.sql:

#Tasks Schema 

# ---- !Ups 
CREATE SEQUENCE task_id_seq; 
CREATE TABLE task (
    id integer NOT NULL DEFAULT nextval('task_id_seq'), 
    label varchar(255), 
    description varchar(255), 
    group varchar(255) 
); 

# ---- !Downs 
DROP TABLE task; 
DROP SEQUENCE task_id_seq; 

Ich fühle mich wie ich alles richtig mache, und wenn ich meinen Server an http://localhost:9000 aktualisieren diese sind die Fehler, die ich erhalten:

Mir wurde gesagt, das ist in Ordnung, aber wenn ich auf "Dieses Skript anwenden" klicke, erhalte ich diesen Fehler:

http://i.imgur.com/0NY8UGv.png

Wie kann ich das beheben? Was mache ich falsch?

Hier weitere Einzelheiten über den Fehler:

[error] p.a.d.e.DefaultEvolutionsApi - Table "TASK" not found; SQL statement: 
DROP TABLE task [42102-191] [ERROR:42102, SQLSTATE:42S02] 
[error] application - 

! @6pm2o74ag - Internal server error, for (GET) [/@evolutions/apply/default?redirect=http%3A%2F%2Flocalhost%3A9000%2F] -> 

play.api.db.evolutions.InconsistentDatabase: Database 'default' is in an inconsistent state![An evolution has not been applied properly. Please check the problem and resolve it manually before marking it as resolved.] 
    at play.api.db.evolutions.DatabaseEvolutions.checkEvolutionsState(EvolutionsApi.scala:276) 
    at play.api.db.evolutions.DatabaseEvolutions.databaseEvolutions(EvolutionsApi.scala:126) 
    at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:102) 
    at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:117) 
    at play.api.db.evolutions.DefaultEvolutionsApi.scripts(EvolutionsApi.scala:82) 
    at play.api.db.evolutions.EvolutionsWebCommands.handleWebCommand(ApplicationEvolutions.scala:360) 
    at play.core.DefaultWebCommands$$anonfun$handleWebCommand$1.apply(WebCommands.scala:40) 
    at play.core.DefaultWebCommands$$anonfun$handleWebCommand$1.apply(WebCommands.scala:40) 
    at scala.collection.immutable.Stream.flatMap(Stream.scala:489) 
    at play.core.DefaultWebCommands.handleWebCommand(WebCommands.scala:40) 

EDIT:

Okay, so ich die Linien

db.default.enabled = true 
    applyEvolutions.db=true 
    applyEvolutions.default=true 
    applyDownEvolutions.default=true 

in meiner /application.conf/ Datei zu sehen hinzugefügt, wenn das einen Unterschied machen würde, und jetzt, wenn ich versuche, Apply this Script! bekomme ich einen anderen Fehler. Jetzt bekomme ich einen Fehler, der besagt, dass meine Syntax in meinem Skript falsch ist. Kann es jemand finden?

Antwort

3

group ein reserviertes Schlüsselwort ist, haben Sie es in Anführungszeichen setzen, wenn Sie es wirklich wollen, verwenden:

CREATE TABLE task (
    id integer NOT NULL DEFAULT nextval('task_id_seq'), 
    label varchar(255), 
    description varchar(255), 
    "group" varchar(255) 
) 

Wenn Sie den „inkonsistenten Zustand“ erhalten Fehler, den Sie auch direkt auf die Datenbank gehen und Überprüfen Sie die play_evolutions Tabelle, es kann hilfreich sein zu sehen, welche Fehler aufgetreten sind.

Außerdem empfehle ich, dass Sie Ihre Entwicklungen in der Datenbank testen, bevor Sie sie im Spiel ausführen. Führe zuerst die Ups und dann die Downs. Es ist einfacher, Syntaxfehler auf diese Weise zu erkennen.

+0

Agh, ich habe gerade herausgefunden, wie du geantwortet hast. Ich fühle mich so dumm, haha. Nun, Problem gelöst! Vielen Dank. –