2014-11-04 4 views
10

데이터베이스 관리에 H2를 사용하고 있는데 다음과 같이하고 싶습니다.어떻게 여러 사용자가 내 H2 데이터베이스에 동시에 연결할 수 있습니까?

여러 사용자가 동시에 데이터베이스에 액세스 할 수 있도록 허용하고 싶습니다. "MULTI_THREADED = TRUE", "LOCK_FILE = NO"및 "AUTO_SERVER = TRUE"에 대해 조금 읽었습니다. 또한 "LOCK_FILE = NO"는 데이터베이스를 손상시킬 수 있으므로 위험 할 수 있음을 읽었습니다. 나는 확실히 이것을 원하지 않을 것이므로 나는 그것이 나쁜 길이라고 생각하고있다. 또한 레코드가 읽혀 지거나 쓰여졌을 때 레코드에 액세스 한 직후에 연결을 닫으려고했습니다. 지금까지 아무것도 작동하지 않는 것 같습니다. 데이터베이스가 응용 프로그램의 다른 인스턴스 (예 : 다른 컴퓨터)에 연결된 경우 응용 프로그램에서 데이터베이스에 대한 읽기 또는 쓰기를 허용하지 않습니다. 한 컴퓨터에서 응용 프로그램을 완전히 닫으면 데이터베이스 레코드에 액세스 할 수 있습니다.

데이터베이스의 안전성을 손상시키지 않으면 서 여러 사용자가 동시에 H2 데이터베이스에 연결할 수 있도록하려면 어떻게해야합니까?

+0

재미있는 첫 번째 대답은 내가 말한 것과 정확히 일치합니다 ... – MadProgrammer

+1

정확하게는 아닙니다. 귀하의 답변 중 어느 것도 매우 직접적이거나 도움이되지 않았습니다. – Ryan

+0

그래서 "서버 모드를 사용하십시오"는 도움이되지 않았습니다 ... 수치심이 있습니다 – MadProgrammer

답변

10

H2를 임베디드 모드로 사용하고있는 것처럼 보입니다. 이는 한 번에 하나의 데이터베이스 연결 만 허용합니다. 자세한 내용은 설명서의 connection modes을 참조하십시오.

여러 응용 프로그램 인스턴스를 포함하여 여러 연결을 지원해야하는 경우 server mode에서 H2를 시작하고이 모드에 적절한 connection URLs을 사용해야합니다.

+0

이렇게하려면 "AUTO_SERVER = TRUE"를 사용하는 방법이 있습니까? 그게 섞여 있을까요? – Ryan

+0

그리고 Auto Server를 true로 설정하면 다중 연결이 허용됩니까? – Ryan

+0

[자동 혼합 모드] (http://www.h2database.com/html/features.html#auto_mixed_mode) (즉, AUTO_SERVER = TRUE)를 사용하면 데이터베이스에 동시에 여러 번 연결할 수 있습니다. 그러나 첫 번째 연결이 서버를 시작하고 연결이 닫히면 서버와 모든 원격 연결이 닫히고 보류중인 트랜잭션이 롤백된다는 제약 때문에이를 권장하지 않습니다. – Lolo

관련 문제