2017-03-01 69 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 =真的,我無法避免惡意或不當的客戶創建任意目錄。 –