2014-01-17 4 views
1

나는 두 개의 클라이언트가 동일한 H2 데이터베이스에 별도로 연결되어 있습니다. 나는이 연결 중 하나를 읽기 전용으로, 그리고 하나는 읽기 - 쓰기로하고 싶습니다. 나는 다음과 같은 연결 문자열을 사용하고이 작업을 수행하려면여러 H2 데이터베이스 연결, 다른 액세스 모드

  • 을 읽기 전용 : jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=r

  • 읽기 - 쓰기 : jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=rw

내 문제 액세스 모드가 될 것으로 보인다이다 연결보다는 데이터베이스의 속성. 따라서 두 클라이언트가 동시에 사용 중이면 첫 번째 연결을 만든 클라이언트가 후속 연결의 액세스 모드보다 우선합니다. 읽기 전용 클라이언트에서 연결이 이미있을 때 읽기/쓰기 클라이언트가 연결되면 데이터베이스를 변경할 수 없습니다. 반대로 두 클라이언트는 읽기 - 쓰기 클라이언트가 처음 인 경우 변경 작업을 수행 할 수 있습니다. 액세스 모드는 기존 연결이 없을 때만 변경되는 것 같습니다.

이 문제를 해결할 수있는 방법이 있습니까? 데이터베이스를 변경할 수있는 자격 증명이있는 사용자는 한 클라이언트에서는 가능하지만 다른 클라이언트에서는 허용 할 수 없으므로 여러 사용자에게 서로 다른 권한을 부여함으로써이를 제어 할 수 없습니다.

+0

난 이해가 안되는데, 왜 당신은 읽기 전용 사용자를 사용할 수 없습니까? –

+0

@ThomasMueller 왜냐하면 한 사람이 두 클라이언트에서 동일한 사용자 자격 증명을 사용할 수 있기를 원하지만 읽기 전용 클라이언트와 연결할 때만 제한적으로 사용하기를 원합니다. – GenericJon

+0

그리고 왜 그렇게하고 싶습니까? –

답변

0

다른 사용자를 사용할 수 있습니다. 한 사용자 'readOnly':

create table test(id int); 
create user readOnly password ''; 
grant select on test to readOnly; 

읽기 전용 모드를 사용하려는 경우 readOnly 사용자를 사용하십시오. 작성하려면 관리자 사용자를 사용하십시오.

관련 문제