現在、私たちが作成し配布したソフトウェアのカスタマーQA環境で問題が発生しています。私は彼らのシステムへのアクセス権が与えられていないので、私が得ることができる唯一の情報は、自分が過労したシステム管理者から集められたサーバログです。政治的な理由から私はこの権利を初めて取得しなければならない。すべての目が私の上にある。SQLServer環境の問題、SQLError 207無効な列名sqlstate 42s22
私たちの内部テスト環境では、SQLServerバージョン10.50.1600を実行しています。このアプリケーションは、Hibernate 3.5.5 + c3p0 0.9を使用するJava Webアプリケーションです。私たちは最近、バグを修正するためにデータベース列を追加しなければなりませんでした。これは基本的に削除を意味するブール値のフラグです。ここに私がテーブルに追加した列があります。この1行のスクリプトは、クライアントに配布された展開パッケージの一部でした。テスト
<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'.
2つの環境間の唯一の識別可能な違いは、彼らがSQLServerのバージョン10.0.4000を実行していることです。彼らのDBAはまた、私に言わなかった他の方法でそれを変えたかもしれません。ここに接続があるのか、それとも何が問題なのか他のアドバイスがありますか?これは文字セットの問題でしょうか?
マッピングで** hibernate.query.substitutions = true 1、false 0 **を逃したことがありますか? – ManuPK