2016-12-17 2 views
2

を作成し、この単純なコードご覧ください:Scalaの滑らかなpostgresqlの私がツルツルに新しいですテーブルスキーマ

import slick.driver.PostgresDriver.api._ 
import slick.lifted.{ProvenShape, Tag} 

case class Person(id: Int, name: String) 

class Persons(tag: Tag) extends Table[Person](tag, "persons") { 

    val id: Rep[Int] = column[Int]("id", O.PrimaryKey) 
    val name: Rep[String] = column[String]("name") 

    override def * : ProvenShape[Person] = (id, name) <> (Person.tupled, Person.unapply) 
} 

object MainRunner extends App { 

    val dbUrl = "jdbc:postgresql://172.17.0.2/slick-test"; 
    val dbUsername = "username" 
    val dbPassword = "password" 
    val dbDriver = "org.postgresql.Driver" 

    val db = Database.forURL(url = dbUrl, driver = dbDriver, user = dbUsername, password = dbPassword) 

    val persons = TableQuery[Persons] 
    val queries = DBIO.seq(
    persons.schema.create 
) 
    val setup = db.run(queries) 
    println(setup) 
}  

をあなたは、このコードに問題があると思いますか?
このコードは問題なくコンパイルして実行できます(エラーまたは例外)
テーブルスキーマを作成できません!
どうしたのですか?

答えて

1

Slick 3.xで)。あなたが持っている問題は、操作が終了するまで待たないということです(スキーマが作成される前にアプリケーションが終了する、すなわち、Futureが実行される前です)。

変更し、これらの行:

val setup = db.run(queries) 
println(setup) 

(新しい輸入に気づく)まで:

import import scala.concurrent.duration.DurationLong 
import scala.concurrent.{Await, Future} 
... 
... 
val setup = db.run(queries).foreach(_ => println("Done, schema created!)) 
Await.result(setup, 5L.seconds) 
+0

はい、私はこの問題があります、ありがとう:)、固定... – mah454

-1

あなたがプレイ+スリックで開始している場合は、多分、このプロジェクトはあなたを助けることができる:

+0

いいえ、これはテストのための唯一の静的なアプリケーションであり、滑らかなORMを学びます。 – mah454

関連する問題