hbm2ddl.auto
이 update
으로 설정된 이상한 최대 절전 모드 동작이 발생했습니다.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_0
에 USER_A.TABLE_1
의 이름을 변경하고 예상 된 결과와 함께 다시 우리가 결국 업데이트 한 후? "이 서버에서이 테이블을 이미 만들었습니다 (사용자에 대해 신경 쓰지 않습니다)"와 같은 내부 최대 절전 모드 캐시와 같은 것이 있습니까?
우리는 구성 문제가 아니라는 것을 확신시키기 위해 꽤 많은 테스트를했는데, 앤트 또는 IDE를 사용하여 다른 머신, 다른 구성에서이를 재현하고 USER_A의 비밀번호를 빌드 디렉토리 등 어디에서나 찾을 수 없도록했습니다. 우리는 100 % 확신합니다. 행동은 묘사 된 바와 같습니다. 그러나 우리는 아이디어가 완전히 사라집니다.
나는이 문제가 지금 당분간 들쭉날쭉 해져 있기 때문에 당신의 생각을 듣고 매우 기쁩니다.
고마워, 피터
당신이 옳았습니다 : USER_B 님이 USER_A에 대한 권한을 가지고 있으며 그 테이블을 볼 수 있었기 때문에 이상한 행동이있었습니다. 사용자 권한을 수정하면이 문제가 해결됩니다. 고마워, partenon - 정말 많은 도움이 답변 :) BTW 및 완전성을 위해 : 설정 hibernate.default_schema 실제로 효과가 없었어요. 다시 한 번 감사드립니다! – PeterP