が動作していない滑らかなを使用して、私は以下のいる環境scala2.11.8 /アッカ2.4.8/3.1.1スリック/ postgreSQLの9.6私はapplication.confへのアクセスはpostgres
mydb {
driver = "slick.driver.PostgresDriver$"
db {
url = "jdbc:postgresql://localhost:5432/mydb"
driver = org.postgresql.Driver
user="postgres"
password="postgres"
numThreads = 10
connectionPool = disabled
keepAliveConnection = true
}
}
で次の設定を行っている
DBへのアクセスは、クラスで行われ
package mib
import slick.driver.PostgresDriver.api._
import scala.concurrent.ExecutionContext.Implicits.global
class DBAccess {
import scala.concurrent.Future
import scala.concurrent._
import scala.concurrent.duration._
import slick.backend.DatabaseConfig
import slick.driver.JdbcProfile
import slick.driver.PostgresDriver
import slick.driver.PostgresDriver.api._
import slick.jdbc.JdbcBackend.Database
println("creating database")
val dbConfig: DatabaseConfig[PostgresDriver] = DatabaseConfig.forConfig("mydb")
val db = dbConfig.db
try{
val accesspoints = TableQuery[mibPoint]
// SELECT * FROM users WHERE username='john'
val q = for (a <- accesspoints) yield a.mib_id
val dbAction = q.result
val f: Future[Seq[String]] = db.run(dbAction)
Await.result(f, Duration.Inf)
f.onSuccess { case s => println(s"Result: $s") }
}
catch
{
case _: Throwable =>println("got some exception")
}
finally
db.close
}
// this is a class that represents the table I've created in the database
class mibPoint(tag: Tag) extends Table[(String, Double,Double)](tag, "mib_non_info") {
def mac_id = column[String]("mib_id",O.PrimaryKey)
def lat = column[Double]("lat")
def lng = column[Double]("lng")
def * = (mib_id, lat,lng)
}
このクラスは、
としてAPPオブジェクトから呼び出されました実行後、私はいつも「例外があります」というメッセージを出力します slf4j/logbackを使用してログを有効にしようとしましたが、まだログに表示されません。 上記は非常に些細なように思え、おそらく私は何か明白でないものを紛失しています。 ありがとうございます。 Vishal
私はsarveshの推奨に従って例外処理を追加しました。それはクールだったし、ありがとう。 しかし私の問題はなくなり、例外はありませんでした。 何が起こったのですか? 当日、私はjava JDBCの方法でDBにアクセスしようとしました。 つまり、DBとDBのアクセスに問題がないことを確認するだけです。 このプロセスでは、クラスパスにpostgresDriverをダウンロードして追加しました。以前はそうではなかった。 ドライバがパスに入ったので、コードが動作しました。 私は例外を印刷していないので、私はエラーを認識していませんでした。 その後、ドライバのjarファイルを削除し、次のエラーが表示されました。
01:44:08.224 [mydb.db-1] DEBUG slick.jdbc.JdbcBackend.statement - Preparing statement: select "mib_id" from "mibpoint"
01:44:08.224 [mydb.db-1] DEBUG slick.jdbc.DriverDataSource - Driver org.postgresql.Driver not already registered; trying to load it
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.lang.ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at slick.util.ClassLoaderUtil$$anon$1.loadClass(ClassLoaderUtil.scala:12)
at slick.jdbc.DriverDataSource$$anonfun$init$2.apply(DriverDataSource.scala:60)
at slick.jdbc.DriverDataSource$$anonfun$init$2.apply(DriverDataSource.scala:58)
at scala.Option.getOrElse(Option.scala:121)
ありがとうございました。 Vishal
スローされた例外とスタックトレースが役立ちます。 – Roman
まず、実際のスタックトレースのエラーを出力する 'case_:Throwable => println("ある例外がある ")を' case ex:Throwable => ex.printStackTrace() 'に置き換えてください。その情報であなたの質問を更新してください。 –
stacktraceを投稿するまでは助けになることはできませんが、mysqlとの動作例がpsqlと大きく異なるはずはありません。https://github.com/pedrorijo91/play-slick3-steps – pedrorijo91