Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 连接到play framework中的本地h2数据库_Playframework_H2 - Fatal编程技术网

Playframework 连接到play framework中的本地h2数据库

Playframework 连接到play framework中的本地h2数据库,playframework,h2,Playframework,H2,我刚开始使用Play framework,但在执行第一步时遇到了问题。默认情况下,application.conf将内存中的数据库作为其url db.default.url="jdbc:h2:mem:play" 我试着把这个改成 db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 但我的应用程序在进行更改后不会运行。我得到的错误是 Error in custom provider

我刚开始使用Play framework,但在执行第一步时遇到了问题。默认情况下,application.conf将内存中的数据库作为其url

db.default.url="jdbc:h2:mem:play"
我试着把这个改成

db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
但我的应用程序在进行更改后不会运行。我得到的错误是

Error in custom provider, Configuration error: Configuration error[Cannot connect to database [default]]
有人能告诉我我是否需要做任何其他的改变或者给我指出正确的方向吗

谢谢

我想您没有“在服务器模式下运行H2”

编辑:

如何在服务器模式下运行H2:

  • 从中下载H2。我使用“独立于平台的Zip”,因为我现在在mac上
  • 打开它。让我们假设~/user/h2(在windows中为C:/h2)
  • 转到终端中的解包文件夹并运行“java-jar bin/h2*.jar”。在此之后,必须使用H2服务器UI控制台打开默认浏览器。URL将类似于“”
  • 您可以运行需要连接到H2的应用程序,例如设置为db.default.url=“jdbc:H2:tcp://localhost/c:/Database/MyPlayDB"
  • 验证我的本地安装。

    如果将配置设置为,则可以成功运行播放

    db.default.url="jdbc:h2:mem:play"
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    
    如果将config设置为,我得到了“自定义提供程序中的错误,配置错误:配置错误[无法连接到数据库[默认]]”

    db.default.url="jdbc:h2:mem:play"
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    
    如果我在服务器模式下运行H2并将config设置为

    db.default.url="jdbc:h2:mem:play"
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    
    db.default.url="jdbc:h2:tcp://localhost/c:/Database/MyPlayDB" 
    

    你能告诉我在H2模式下运行它需要做什么吗?另外,我希望在运行Play应用程序时创建数据库文件。所以,如果我没有数据库,我不知道如何在服务器模式下运行H2读取答案-它是创建的,您可以通过地址“jdbc:H2:mem:play”连接到它。问题是您试图连接到“jdbc:h2:tcp://localhost/c:/Database/MyPlayDB“-所以您需要独立于播放运行h2服务器,并配置该数据库。我建议您使用默认的“jdbc:h2:mem:play”或阅读如何将h2作为服务器运行(在该版本中有链接),我没有使用内存数据库的选项。我一直在考虑运行h2服务器,但它与我们给出的步骤完全冲突。显然,这些都不是必需的。但是,我查看了导入org.h2.tools.Server;//启动TCP服务器=Server.createTcpServer(args).start();…//停止TCP服务器。停止()来自文档,但我不确定必须在我的play应用程序中的何处插入。你能解释一下吗?看看我的编辑部分,你不必运行外部H2服务器。据我所知,Aadithya希望将数据库存储在一个文件中。为此,您可以在
    application.conf
    中使用
    db.default.url=“jdbc:h2:databasefilename”
    。但是您必须在
    persistence.xml
    中配置您的持久性单元。请向我们展示您的META-INF/persistence.xml和应用程序.conf的数据库部分。我的persistence.xml是空的,.conf文件具有数据库,因为url可能错误。您想将数据库存储到本地文件中,对吗?然后使用
    db.default.url=“jdbc:h2:databasefilename”
    。那么,databasefilename应该是本地计算机上的路径还是仅仅是名称?如果它只是一个名字,它是在哪里创建的?两者都有可能。例如,使用
    db.default.url=“jdbc:h2:databasefolder/databasefilename”
    您的数据库文件存储在应用程序根文件夹中的“databasefolder”文件夹中。