关于 Slick 3.0.0,为什么插入现有 PK 不抛出任何错误?
About Slick 3.0.0, Why insert with exist PK don't throw any error?
您好,我对 Slick 3 很困惑,我创建了简单的插入。
如果我插入了新的 PK,它运行良好,但是当我尝试插入一个现有的 PK 时,Slick 不会抛出任何错误并且 future.isCompleted 仍然是 return true。
那么我的代码有什么问题呢?
val db = Database.forConfig("db")
val future = {
try {
val insert = DBIO.seq(
subscribers += subscriber
)
db.run(insert.transactionally)
} finally db.close
}
return if (future.isCompleted) return Some(subscriber) else None
已解决:我只需要等待结果。
val db = Database.forConfig("db")
val isCompleted = {
val f = db.run((subscribers += subscriber).transactionally)
try {
Await.result(f, Duration.Inf)
true
} catch {
case _ => false
} finally db.close
}
return if (isCompleted) return Some(subscriber) else None
问题似乎是您的代码没有等到将来 db.run(insert.transactionally)
完成。您创建未来,然后立即关闭数据库。
您好,我对 Slick 3 很困惑,我创建了简单的插入。 如果我插入了新的 PK,它运行良好,但是当我尝试插入一个现有的 PK 时,Slick 不会抛出任何错误并且 future.isCompleted 仍然是 return true。 那么我的代码有什么问题呢?
val db = Database.forConfig("db")
val future = {
try {
val insert = DBIO.seq(
subscribers += subscriber
)
db.run(insert.transactionally)
} finally db.close
}
return if (future.isCompleted) return Some(subscriber) else None
已解决:我只需要等待结果。
val db = Database.forConfig("db")
val isCompleted = {
val f = db.run((subscribers += subscriber).transactionally)
try {
Await.result(f, Duration.Inf)
true
} catch {
case _ => false
} finally db.close
}
return if (isCompleted) return Some(subscriber) else None
问题似乎是您的代码没有等到将来 db.run(insert.transactionally)
完成。您创建未来,然后立即关闭数据库。