scala slick postgresql 创建 table 模式
scala slick postgresql create table schema
我是 slick 的新手,请查看这个简单的代码:
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)
}
您认为这段代码有问题吗?
此代码编译 运行 没有任何问题(错误或异常)
但无法创建 table 架构 !
怎么了 ?
如果您刚开始使用 play+slick,也许这个项目可以帮助您:
我认为这与会话无关(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)
我是 slick 的新手,请查看这个简单的代码:
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)
}
您认为这段代码有问题吗?
此代码编译 运行 没有任何问题(错误或异常)
但无法创建 table 架构 !
怎么了 ?
如果您刚开始使用 play+slick,也许这个项目可以帮助您:
我认为这与会话无关(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)