h2 持久存储:未找到数据库

Posted

技术标签:

【中文标题】h2 持久存储:未找到数据库【英文标题】:h2 persistent storage: No database found 【发布时间】:2013-01-26 16:06:22 【问题描述】:

如果数据库不存在,H2 应该创建它。我修改了 url,将“mem”更改为“file”,并将下一个参数“play”更改为以新名称为后缀的路径,该名称将成为数据库。但是,我不断收到此异常:

Database error
A database error occured : No database found. Check the configuration of your application.

play.exceptions.DatabaseException: No database found. Check the configuration of your application.
    at play.db.DB.getConnection(DB.java:65)
    at play.modules.siena.PlayConnectionManager.getConnection(PlayConnectionManager.java:16)
    at play.modules.siena.SienaPlugin.onApplicationStart(SienaPlugin.java:138)
    at play.plugins.PluginCollection.onApplicationStart(PluginCollection.java:525)
    at play.Play.start(Play.java:526)
    at play.Play.detectChanges(Play.java:630)
    at play.Invoker$Invocation.init(Invoker.java:198)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.NullPointerException
    at play.db.DB.getConnection(DB.java:58)

这是活动环境:

%h2dev.application.mode=dev
%h2dev.db.url=jdbc:h2:file:/var/stkdb/h2.db;MODE=mysql;LOCK_MODE=0
%h2dev.jpa.ddl=create
%h2dev.mail.smtp=mock

有什么想法吗?我也安装了 GAE 模块。不过这应该没关系...

【问题讨论】:

【参考方案1】:

您需要将以下行添加到您的application.conf

%h2dev.db.driver=org.h2.Driver
%h2dev.db.user=sa 
%h2dev.db.pass= 

【讨论】:

我只需要这行 %h2dev.db.driver=org.h2.Driver .. 也许框架中的一个很好的例外是有序的。 奇怪 h2 "mem" 数据库如何正常工作,但是当我将 h2 移动到文件系统时,需要驱动程序配置行。【参考方案2】:

如列表中所述 - 您不能在 GAE 上使用文件系统数据库。如果您的意图是让它仅用于测试/开发,那么也许这会起作用。如果您想在 GAE 上部署此代码,您将走入死胡同,因为您将永远无法在 GAE 上使用 H2。

【讨论】:

我打算今天在亚马逊的 h2 上运行,并在未来与数据存储保持兼容。如果这在 GAE 中运行得更好,我们需要自动缩放。 也许禁用 GAE 模块,看看是否有帮助 - 您应该能够继续使用 Sienna。我不确定,但它可能会影响 HPA 插件的加载方式。 进行了很多代码更改,但我只是尝试过.. 谢谢.. 不过运气不好 对不起,我的野鹅追逐。 :( 可能有用的最后一条评论 - 小心不要相信您可以轻松切换到 GAE 的数据存储并让它以与 H2 类似的方式工作 - H2 和 GAE 的 HRD 之间的性能存在许多极端差异(HRD 真的很慢!),以及它们的行为方式(ACID vs BASE:developers.google.com/appengine/docs/java/datastore/…) 我完全同意。我首先在 GAE 方面获得了一些经验来帮助解决这个问题。另外,我正在使用 DAO,所以我希望将其限制在单层进行更改...

以上是关于h2 持久存储:未找到数据库的主要内容,如果未能解决你的问题,请参考以下文章

org.h2.jdbc.JdbcSQLException:在使用 H2 数据库进行测试期间未找到列“Id”

未找到 H2 数据库

H2数据库用户定义的java函数类未找到

未找到 Hibernate H2 数据库

尝试连接时未找到 H2 驱动程序

如何像在 grails 中一样使我的 h2 数据库在 micronaut 中持久化?