gpt4 book ai didi

scala 光滑的 postgresql 创建表模式

转载 作者:行者123 更新时间:2023-12-01 06:05:02 25 4
gpt4 key购买 nike

我是新来的,请查看这个简单的代码:

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)
}

你认为这段代码有问题吗?
此代码编译和运行没有任何问题(错误或异常)
但无法创建表架构!
怎么了 ?

最佳答案

我认为这与 session 无关(在 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)

关于scala 光滑的 postgresql 创建表模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41196840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com