2017-01-11 9 views
2

が動作していない滑らかなを使用して、私は以下のいる環境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

+0

スローされた例外とスタックトレースが役立ちます。 – Roman

+1

まず、実際のスタックトレースのエラーを出力する 'case_:Throwable => println("ある例外がある ")を' case ex:Throwable => ex.printStackTrace() 'に置き換えてください。その情報であなたの質問を更新してください。 –

+0

stacktraceを投稿するまでは助けになることはできませんが、mysqlとの動作例がpsqlと大きく異なるはずはありません。https://github.com/pedrorijo91/play-slick3-steps – pedrorijo91

答えて

0

私は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) 

ありがとうございました。ヴィシャル

0
mydb { 
    dataSourceClass = "slick.jdbc.DatabaseUrlDataSource" 
    properties = { 
    driver = "slick.driver.PostgresDriver$" 
    url = "postgres://postgresql:[email protected]:5432/mydb" 
    } 
} 

それとも..あなたは、あなたがクラスパス上のPostgresのドライバ必要、などの

mydb = { 
    dataSourceClass = "org.postgresql.ds.PGSimpleDataSource" 
    properties = { 
    url = "jdbc:postgresql://localhost:5432/mydb" 
    user = "postgres" 
    password = "postgres" 
    } 
    numThreads = 10 
} 
0

を何かを試すことができます:あなたのlibraryDependenciesに"org.postgresql" % "postgresql" % "42.1.4"を追加

てみてください。

関連する問題