Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Java 尝试连接到H2数据库时出错_Java_Connection_H2 - Fatal编程技术网

Java 尝试连接到H2数据库时出错

Java 尝试连接到H2数据库时出错,java,connection,h2,Java,Connection,H2,在尝试连接到H2时,是否有人出现以下错误? 我使用的版本是1.4.199,在windows上,带有TAFJFuctions 首先,我运行以下命令: java-server-cph2-1.4.199.jar;C:\Users\…\H2\TAFJFunctions.jar org.H2.tools.Server-web-tcp-tcpPort 9092-tcpalloworths-baseDir C:\Users\…\H2\bin 我已经连接到运行的TCP服务器和运行的Web控制台服务器。 然后我运

在尝试连接到H2时,是否有人出现以下错误? 我使用的版本是1.4.199,在windows上,带有TAFJFuctions

首先,我运行以下命令: java-server-cph2-1.4.199.jar;C:\Users\…\H2\TAFJFunctions.jar org.H2.tools.Server-web-tcp-tcpPort 9092-tcpalloworths-baseDir C:\Users\…\H2\bin

我已经连接到运行的TCP服务器和运行的Web控制台服务器。 然后我运行了以下命令: 设置H2URL=jdbc:h2:tcp://locaLhost/t24db;DB_关闭_上的_退出=错误;模式=Oracle;跟踪级文件=0;跟踪级系统输出=0;文件锁定=否;如果存在=真;缓存大小=8192;MVCC=真;锁定超时=60000

然后这个命令: java-server-cph2-1.4.199.jar;C:\Users\…\H2\TAFJFunctions.jar org.H2.tools.Shell-url%H2URL%-driver org.H2.driver-user t24-password t24

这里我得到了以下错误:

"Exception in thread "main" org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/.../H2/bin/t24db" not found, and IFEXISTS=true, so we cant auto-create it [90146-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
    at org.h2.message.DbException.get(DbException.java:205)
    at org.h2.message.DbException.get(DbException.java:181)
    at org.h2.engine.Engine.openSession(Engine.java:67)
    at org.h2.engine.Engine.openSession(Engine.java:201)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:178)
    at org.h2.engine.Engine.createSession(Engine.java:161)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:160)
    at java.lang.Thread.run(Unknown Source)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:617)
    at org.h2.engine.SessionRemote.done(SessionRemote.java:607)
    at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:143)
    at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:431)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:317)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:169)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:148)
    at org.h2.Driver.connect(Driver.java:69)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.h2.tools.Shell.runTool(Shell.java:148)
    at org.h2.tools.Shell.main(Shell.java:81)"
你知道怎么让它工作吗

谢谢,,
Carina

这里的问题是还没有名为t24db的数据库

在用于连接h2的属性spring.datasource.url中,删除参数IFEXISTS=TRUE。 这将确保在数据库不存在时创建数据库。

如果IFEXISTS=TRUE,则问题不会被发现,但如果没有此参数或试图将其设置为FALSE,则情况不会改变

由于安全原因,H2数据库的所有最新版本在默认情况下不再允许创建远程(包括本地TCP连接)数据库。在允许的情况下,每个可以连接到您的端口的人都可以创建一个新的数据库,在其中获得管理员权限,从而获得与您的JVM和用户帐户相同的系统访问权限

不幸的是,H2 1.4.199抛出了一条令人困惑的错误消息,仅在1.4.200中对其进行了改进,在此版本中,当未使用IFEXISTS=TRUE时,错误消息为“数据库…未找到,建议在安全环境中预创建或允许远程数据库创建”

如果使用TCP或Pg/ODBC服务器,则在尝试使用网络协议连接数据库之前,需要以其他方式创建数据库

例如,您可以使用嵌入的URL打开JDBC连接DriverManager.getConnection并立即关闭它

您可以将org.h2.tools.Server替换为org.h2.tools.Console,如果从命令行启动它,您将看到另一个http连接URL,如http://127.0.0.2:8082?key=12c58e1c5f9ce1ae88a2921f74e7655ed91a80746730cc6bfa8d4bbb464f69ee; 使用此URL,只有在未启用“删除web界面”的情况下,才能从web界面创建数据库

您还可以将-tool参数仅添加到Console,服务器不支持它在系统托盘中获取H2 Console图标,其上下文菜单具有创建新数据库的命令,并且该图标还可以使用相同的安全密钥打开web界面。不要与任何人共享此密钥。但是,每次重新启动都会有所不同

也可以使用命令行Shell工具


在最坏的情况下,您可以启用remove数据库创建,但即使使用本地连接,它也不是真正安全的,并且在您的情况下启用远程连接时,它是完全不安全的。您的系统中会有一个众所周知的远程安全漏洞,我不认为这是您的意图。

嗨,Midhun,我已经删除了参数并关闭了cmd的窗口,重新打开并重新运行没有该参数的命令,我得到了相同的错误:尝试将其设置为false而不是Removing我已重新启动并将其设置为false,但情况相同:确定:Web控制台服务器仅在本地连接上运行我尝试使用命令行创建一个新的db,但遇到相同的错误:欢迎使用H2 Shell 1.4.199 2019-03-13[输入]jdbc:h2:~/test URL C:/Users/C64075/h2/bin/test Driver org.h2.Driver[输入]用户sa密码SQL异常:Driver org.h2.Driver不适合C:/Users/C64075/h2/bin/test;IFEXISTS=TRUE[输入]jdbc:h2:~/test URL C:/Users/C64075/h2/bin/t24db Driver org.h2.Driver[输入]用户t24密码SQL异常:Driver org.h2.Driver不适用于C:/Users/C64075/h2/bin/t24db;IFEXISTS=TRUE[Enter]jdbc:h2:~/testI我也尝试了控制台而不是工具参数,我得到了以下信息:Hmmm…无法访问此页面请尝试此方法•确保您拥有正确的网址:•在Bing上搜索•刷新页面详细信息•报告此问题如果使用命令行工具,您应该将jdbc:h2:/path/to/t24db指定为URL,其中/path/to/t24db是指向数据库的绝对或相对路径,没有文件扩展名。您不能只使用没有jdbc:h2:prefix作为jdbc URL的路径。谢谢: