우리가 작성하고 배포 한 소프트웨어의 고객 QA 환경에서 문제가 발생했습니다. 그들의 시스템에 접근 할 권한이 없기 때문에 내가 얻을 수있는 유일한 정보는 과로하고 과도한 시스템 관리자로부터 수집 할 수있는 서버 로그입니다. 정치적인 이유로 나는 처음으로이 권리를 얻어야합니다. 모든 눈이 내 위에있다.SQLServer 환경 문제, SQLError 207 잘못된 열 이름 sqlstate 42s22
우리의 내부 테스트 환경에서 우리는 SQLServer 버전 10.50.1600을 실행하고 있습니다. 이 응용 프로그램은 Hibernate 3.5.5 + c3p0 0.9를 사용하는 Java 웹 응용 프로그램입니다. 우리는 최근 버그를 수정하기 위해 데이터베이스 열을 추가해야했습니다. 기본적으로 삭제를 의미하는 부울 플래그입니다. 여기에 제가 테이블에 추가 한 컬럼이 있습니다. 이 한 줄 스크립트는 클라이언트에게 전달 된 배포 패키지의 일부였습니다. 테스트
<property name="expired" type="boolean">
<column name="expired" precision="1" scale="0" not-null="true" />
</property>
단위, 코드 검토, 통합 테스트, QA, 사내에서 인정 포장 및 클라이언트에 전달 :
alter table foo.bar add expired tinyint not null default 0;
나는 응용 프로그램에 다음과 같은 Hibernate 매핑을 추가했다. 클라이언트는 업데이트를 올바르게 적용하고이를 증명하는 스크린 샷을 제공했습니다. 열이 있습니다. 응용 프로그램 로그에 다음과 같은 예외와 함께 실패합니다
2012-03-09 14:50:18,374 WARNING [org.hibernate.util.JDBCExceptionReporter] (ajp-####) SQL Error: 207, SQLState: 42S22 2012-03-09 14:50:18,374 SEVERE [org.hibernate.util.JDBCExceptionReporter] (ajp-####) Invalid column name 'expired'.
두 환경 사이의 유일한 뚜렷한 차이가 SQLServer에 버전 10.0.4000을 실행하는 것입니다. 그들의 DBA는 나에게 말하지 않은 다른 방법으로 그것을 조정할 수도 있습니다. 문제가 무엇인지에 대해 여기에 연결되어 있거나 다른 조언이 있습니까? 이것이 문자 집합 문제 일 수 있습니까?
매핑에서 ** hibernate.query.substitutions = true 1, false 0 **를 놓치셨습니까? – ManuPK