2011-01-26 7 views
0

hbm2ddl.autoupdate으로 설정된 이상한 최대 절전 모드 동작이 발생했습니다.hbm2ddl.auto = update가 다른 DB 사용자를 존중하지 않습니까?

테스트 설정에는 베타 애플리케이션 용 테이블이 포함 된 데이터베이스 사용자와 개발을 위해 주로 사용되는 데이터베이스 사용자가 있습니다. 나는. 다른 사용자와 동일한 테이블 이름. 새 테이블을 만들려면 hbm2ddl.auto=update을 사용합니다.

이상한 행동은 갑자기 이상한 행동입니다. 즉, 업데이트 프로세스가 잘못된 사용자로 기존 테이블을 찾고 올바른 사용자와 일치하지 않는 테이블을 만듭니다.

예. 다음 표는

USER_A.TABLE_1 
USER_B.TABLE_2 

존재하고 우리가 구성된 세 개의 테이블로 업데이트 할 경우 : TABLE_1, TABLE_2, TABLE_3 USER_B를 사용하여, 우리는 USER_B 생성되지

USER_A.TABLE_1 
USER_B.TABLE_2 
USER_B.TABLE_3 

TABLE_1와 끝까지.

USER_A.TABLE_0 
USER_B.TABLE_1 
USER_B.TABLE_2 
USER_B.TABLE_3 

이 사람에게 어떤 의미가 있는가 : USER_A.TABLE_0USER_A.TABLE_1의 이름을 변경하고 예상 된 결과와 함께 다시 우리가 결국 업데이트 한 후? "이 서버에서이 테이블을 이미 만들었습니다 (사용자에 대해 신경 쓰지 않습니다)"와 같은 내부 최대 절전 모드 캐시와 같은 것이 있습니까?

우리는 구성 문제가 아니라는 것을 확신시키기 위해 꽤 많은 테스트를했는데, 앤트 또는 IDE를 사용하여 다른 머신, 다른 구성에서이를 재현하고 USER_A의 비밀번호를 빌드 디렉토리 등 어디에서나 찾을 수 없도록했습니다. 우리는 100 % 확신합니다. 행동은 묘사 된 바와 같습니다. 그러나 우리는 아이디어가 완전히 사라집니다.

나는이 문제가 지금 당분간 들쭉날쭉 해져 있기 때문에 당신의 생각을 듣고 매우 기쁩니다.

고마워, 피터

답변

0

는 "이봐, 난 이미이 서버에서이 테이블을 만들었습니다 (내가 사용자에 대한 상관 없어)"같은 기억 내부 최대 절전 모드 캐시와 같은 뭔가가 있나요.

아니요. 아마 USER_A가 USER_B 계정으로 생성 된 테이블을 볼 수 있으며 그 반대도 마찬가지입니다. 어떤 데이터베이스를 사용하고 있는지는 명확하지 않지만, 다른 사용자를 사용하는 것 외에도 두 개의 다른 스키마를 사용하도록 Hibernate를 구성하려고합니다. 당신은 또한 "hibernate.default_schema"속성을 설정하려고 할 수도 있지만, 이것이 단지 당신의 문제를 해결할 수 있을지 확신하지 못합니다.

+0

당신이 옳았습니다 : USER_B 님이 USER_A에 대한 권한을 가지고 있으며 그 테이블을 볼 수 있었기 때문에 이상한 행동이있었습니다. 사용자 권한을 수정하면이 문제가 해결됩니다. 고마워, partenon - 정말 많은 도움이 답변 :) BTW 및 완전성을 위해 : 설정 hibernate.default_schema 실제로 효과가 없었어요. 다시 한 번 감사드립니다! – PeterP

관련 문제