2017-03-01 67 views
0

后,我创建目录任意数量的(比方说50)所示:HSQLDB重启服务器目录SHUTDOWN

... 
    properties = new HsqlProperties(); 
    properties.setProperty("server.remote_open", false); 
    properties.setProperty("server.shutdown", false); 

    for(int i=0;i<50; i++){ 
     properties.setProperty("server.database." + i, "file:db/production/pr" + i + "/pr"); 
     properties.setProperty("server.dbname." + i, "alias" + i); 
    } 

    Server server = new Server(); 
    server.setProperties(p); 
    server.setLogWriter(null); 
    server.setErrWriter(null); 
    server.start(); 
    ... 

我可以成功连接到每一个使用用户名“SA”所创建的目录,空密码和生成的别名。 如果我发出在打开的目录中的一个“关机”,它关闭正常,但是当我试图重新打开它,我获得“常规错误:数据库别名不存在”,所以我需要关闭整个服务器,然后重新启动。 如何在没有重新启动服务器的情况下在“SHUTDOWN”后重新打开单个数据库?

+0

你用什么代码重新打开数据库? – fredt

+0

@fredt没有代码,我想要从第三方应用程序访问数据库。基本上我在推出IntelliJ IDEA的我的服务器代码,然后用的LibreOffice Base或Netbeans的数据库浏览器对databases.I工作能够成功与这两个程序打开数据库,但发出“关闭”后,如果我尝试重新打开该数据库,会“一般错误:数据库别名不存在“。 –

回答

0

先从server.remote_open = true属性的服务器,并指定在连接的URL路径。

http://hsqldb.org/doc/guide/listeners-chapt.html#lsc_remote_open

+0

我需要客户端连接到我为他们准备的其中一个数据库(使用自定义角色,用户和内容)。使用server.remote_open = true,每个客户可以随意创建一个新的数据库。我确实探索了这条路,但我没有找到一种禁止任意数据库创建的方法。 –

+0

所以你不应该让客户端执行SHUTDOWN。客户端应该以没有管理员权限的用户身份连接。 – fredt

+0

同意,但每当我想备份我的数组目录中的一个数据库时,我需要关闭它。我如何将它重新联机?与server.remote_open = FALSE它似乎是唯一的选择就是重新启动整个服务器,同时与server.remote_open =真的,我无法避免恶意或不当的客户创建任意目录。 –