2017-03-01 3 views
0

後、サーバーカタログを再度開く:HSQLDBは​​、私はこのようなカタログの任意の数(のは、50をしましょう)を作成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」を使用して作成したカタログのそれぞれに接続することができ、空のパスワードをし、生成されたエイリアス 開いているカタログの1つで 'SHUTDOWN'を発行すると正しくシャットダウンされますが、再オープンしようとすると「一般的なエラー:データベースエイリアスが存在しません」というメッセージが表示されるため、サーバー全体をシャットダウンして再起動する必要があります。 サーバーを再起動せずに 'シャットダウン'後に単一のデータベースを再オープンするにはどうすればよいですか?

+0

データベースを再オープンするためにどのようなコードを使用しますか? – fredt

+0

@fredtコードはありません。私は、サードパーティのアプリケーションからデータベースにアクセスしたいと考えています。基本的にIntellij Ideaでサーバーコードを起動し、Libreoffice BaseまたはNetbeansデータベースブラウザを使用してデータベースを操作します。両方のプログラムでデータベースを正常に開くことができますが、データベースを開こうとすると「SHUTDOWN」を発行した後、一般的なエラー:データベースエイリアスが存在しません "。 –

答えて

0

server.remote_open = trueプロパティでサーバーを起動し、接続URLのパスを指定します。

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

+0

私はそれらのために用意したデータベースの1つ(カスタムロール、ユーザー、およびコンテンツ)に接続するためにクライアントが必要です。 server.remote_open = trueを使用すると、すべてのクライアントが自由に新しいデータベースを作成できます。私はこの道を探ったが、任意のデータベース作成を無効にする方法は見つけられなかった。 –

+0

クライアントがSHUTDOWNを実行することを許可しないでください。クライアントは管理者権限のないユーザーとして接続する必要があります。 – fredt

+0

合意しましたが、カタログの配列の1つのデータベースをバックアップしたいときはいつでもシャットダウンする必要があります。どうすればオンラインに戻すことができますか? server.remote_open = trueを使用すると、Server.remote_open = trueを使用している間に唯一のオプションがServer全体を再起動するように思われます。悪意のあるクライアントまたは不正なクライアントが任意のカタログを作成することは避けられません。 –

関連する問題