2016-04-13 2 views
2

私は、プレイで自分のタスクを処理するデータベースを作成しようとしています!フレームワーク。再生!フレームワークデータベーススクリプトアプリケーションエラー

は、ここで私が持っているものだ:build.sbt

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

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

私は私のapp/models/Task.scalaでanormをインポートして、タスクを定義しています:

import anorm._ 
import anorm.SqlParser._ 

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

そして、これは私の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; 

私は正しいすべてをやっている、と私はhttp://localhost:9000で私のサーバーを更新すると、これらは私が受け取るエラーであるように私は感じる:

http://i.imgur.com/MIl8Tds.png

「このスクリプトを適用する」をクリックすると、このエラーが表示されます。

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

これをどのように修正できますか?私は間違って何をしていますか?

ここでエラーの詳細です:

[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:

わかりましたので、私は、それが違いを生むだろうかどうかを確認するために私の/application.conf/ファイルに

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

ラインを追加しましたと今私がしようとするとApply this Script!私は別のエラーが表示されます。今、スクリプトの私の構文が間違っているというエラーが表示されます。誰でもそれを見つけることができますか?

答えて

3

groupは、あなたが実際にそれを使用したい場合は、引用符の間に配置する必要があり、予約済みのキーワードである:あなたが「矛盾した状態」のエラーを取得する場合

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

あなたは、データベースに直接アクセスすることができますし、 play_evolutionsテーブルを確認すると、どのエラーが発生したかを知ることができます。

また、演奏中にEvolutionをテストすることをお勧めします。最初にアップを実行し、次にダウンを実行します。このように構文エラーを検出する方が簡単です。

+0

ああ、私はちょうどあなたが答えたように考え出しました。私はとても馬鹿だと思う。さて、問題は解決しました!ありがとうございました。 –