【发布时间】:2016-04-26 16:30:46
【问题描述】:
所以我正在尝试修改类型安全激活器模板之一以使用 SQLite 数据库而不是内置的 H2 数据库。这是原始模板https://github.com/playframework/playframework/tree/master/templates/play-scala-intro
我所做的是将 application.conf 文件更改为具有以下几行:
slick.dbs.default.driver=slick.driver.SQLiteDriver
slick.dbs.default.db.driver=org.sqlite.JDBC
slick.dbs.default.db.url="jdbc:sqlite:/home/marcin/play-scala-intro/people.db"
当然,我自己也创建了文件(刚刚创建了touch people.db)。然后,如果我启动我的应用程序,我会收到以下错误:
[info] ! @6ooe822f0 - Internal server error, for (GET) [/] ->
[info]
[info] play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [default]]
[info] at play.api.Configuration$.configError(Configuration.scala:178) ~[play_2.11-2.4.6.jar:2.4.6]
[info] at play.api.Configuration.reportError(Configuration.scala:829) ~[play_2.11-2.4.6.jar:2.4.6]
[info] at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.create(SlickApi.scala:93) ~[play-slick_2.11-1.1.1.jar:1.1.1]
[info] at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get$lzycompute(SlickApi.scala:81) ~[play-slick_2.11-1.1.1.jar:1.1.1]
[info] at play.api.db.slick.DefaultSlickApi$DatabaseConfigFactory.get(SlickApi.scala:80) ~[play-slick_2.11-1.1.1.jar:1.1.1]
我正在寻找一些示例,如何像这里一样设置它 https://groups.google.com/forum/#!msg/scalaquery/07JBbnZ5VZk/7D1_5N4uGjsJ
或这里:
https://github.com/playframework/play-slick
但它们与我的代码不够相似,而且由于我对这一切都很陌生,所以我无法真正弄清楚如何使用它们。感谢您的帮助,谢谢!
[编辑]:
根据我在驱动程序名称末尾添加“$”的评论中的建议,conf 文件中的内容现在如下所示:
slick.dbs.default.driver=slick.driver.SQLiteDriver$
slick.dbs.default.db.driver=org.sqlite.JDBC
slick.dbs.default.db.url="jdbc:sqlite:/home/marcin/play-scala-intro/people.db"
这在出现另一个错误的意义上是有效的:
[info] Caused by: java.sql.SQLException: JDBC4 Connection.isValid() method not supported, connection test query must be configured
[info] at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:441) ~[HikariCP-java6-2.3.7.jar:na]
[info] at com.zaxxer.hikari.pool.BaseHikariPool$1.run(BaseHikariPool.java:413) ~[HikariCP-java6-2.3.7.jar:na]
[info] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_66]
【问题讨论】:
-
将
slick.driver.SQLiteDriver更改为slick.driver.SQLiteDriver$。如果这没有帮助,请添加堆栈跟踪的根本原因。 -
感谢您的评论!从某种意义上说,它确实有所帮助,因为我现在遇到了一个不同的错误
[info] Caused by: java.sql.SQLException: JDBC4 Connection.isValid() method not supported, connection test query must be configured [info] at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:441) ~[HikariCP-java6-2.3.7.jar:na] [info] at com.zaxxer.hikari.pool.BaseHikariPool$1.run(BaseHikariPool.java:413) ~[HikariCP-java6-2.3.7.jar:na] [info] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_66] -
也许在您的
applicaion.conf中设置一个测试查询有助于:slick.dbs.default.db.connectionTestQuery="select 1"。 -
离题:在 SO 上,通常使用新发现来编辑问题,而不是在 cmets 中添加它们。这样其他用户可以更轻松地帮助您解决问题:)
-
好吧,我想我现在放弃了。您的建议有所帮助,但我遇到了其他问题,现在它并不是项目的重要组成部分。感谢您的帮助
标签: scala sqlite playframework playframework-2.0 slick