2017-03-01 1 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"를 사용하여 만든 카탈로그, 빈 암호를 각각 연결할 수

및 생성 된 별명 열린 카탈로그 중 하나에서 '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

클라이언트 (사용자 지정 역할, 사용자 및 내용)를 준비한 데이터베이스 중 하나에 연결하려면 클라이언트가 필요합니다. server.remote_open = true를 사용하면 모든 클라이언트가 원하는대로 새 데이터베이스를 만들 수 있습니다. 이 경로를 탐색했지만 임의의 데이터베이스 생성을 비활성화하는 방법을 찾지 못했습니다. –

+0

그래서 클라이언트가 셧다운을 수행하도록 허용해서는 안됩니다. 클라이언트는 관리자 권한이없는 사용자로 연결해야합니다. – fredt

+0

동의합니다. 그러나 카탈로그 배열 중 하나의 데이터베이스를 백업 할 때마다 종료해야합니다. 온라인으로 다시 가져 오는 방법은 무엇입니까? server.remote_open = true로 설정하면 전체 서버를 재부팅하는 것이 유일한 옵션 인 것처럼 보이지만 server.remote_open = true를 사용하면 악의적이거나 부당한 클라이언트가 임의의 카탈로그를 만들지 않도록 할 수 있습니다. –

관련 문제