2012-03-12 11 views
1

現在、私たちが作成し配布したソフトウェアのカスタマー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はまた、私に言わなかった他の方法でそれを変えたかもしれません。ここに接続があるのか​​、それとも何が問題なのか他のアドバイスがありますか?これは文字セットの問題でしょうか?

+1

マッピングで** hibernate.query.substitutions = true 1、false 0 **を逃したことがありますか? – ManuPK

答えて

3

私は問題が何かを理解しました。

質問でこれを言ったとき、それはまったく間違っていました。

The column exists.

この環境には列が存在しませんでした。 DBAは私に間違った環境に関する情報を提供していました。

これはレッスンの人にしてください。自分のサーバーでホストするクライアントに配布するWebアプリケーションを構築しないでください。あなたがそれを助けることができれば、自分のサーバー上で自分のWebアプリケーションをホストして、あなたがそれを完全に制御できるようにします。 :)

+0

クラウドホスティングサービスへのパラダイムシフトはurコメントで強化されています – Cshah

関連する問題