2016-12-17 48 views
2

我在光滑的新信息,請查看這個簡單的代碼:階光滑的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