2012-03-12 3 views
1

우리가 작성하고 배포 한 소프트웨어의 고객 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는 나에게 말하지 않은 다른 방법으로 그것을 조정할 수도 있습니다. 문제가 무엇인지에 대해 여기에 연결되어 있거나 다른 조언이 있습니까? 이것이 문자 집합 문제 일 수 있습니까?

+1

매핑에서 ** hibernate.query.substitutions = true 1, false 0 **를 놓치셨습니까? – ManuPK

답변

3

나는 문제가 무엇인지 알아 냈다.

내가이 질문에 말했을 때, 그것은 노골적으로 사실이 아니 었습니다.

The column exists.

해당 환경에 열이 없습니다. DBA는 나에게 잘못된 환경에 대한 정보를 제공했습니다.

수업에 참여하십시오. 자체 서버에서 호스트하기 위해 클라이언트에 배포 할 웹 응용 프로그램을 빌드하지 마십시오. 도움이 될 수 있다면 자신의 웹 응용 프로그램을 자신의 서버에서 호스팅하여 완벽하게 제어 할 수 있습니다. :)

+0

클라우드 호스팅 서비스로의 패러다임 전환은 ur 의견으로 강화됩니다. – Cshah

관련 문제