1

MS SQL Server 2005 を使用して、Windows Server で ColdFusion 9 を使用しています。奇妙な問題が発生しています。

データベース内のテーブルにクエリを実行し、必要な情報を取得して、結果からオブジェクトを構築することで、オブジェクトを作成しています。したがって、テーブルにこれらの列がある場合:

id
name
address

get_id()、get_name()、get_address() などのメソッドを使用してオブジェクトを作成しています。これはすべて正常に機能し、これらのメソッドをクエリすると、期待どおりの結果が得られます。

しかし今、私は入ってテーブルを変えます。「都市」などの新しい列を追加します。すべて問題ありません。オブジェクトはまだインスタンス化されています。しかし今、私は入って、その新しい列にいくつかのデータを入れます. オブジェクトのインスタンス化が機能しなくなりました。次のような一般的なエラーが発生します。

element ADDRESS is undefined in instance

cfquery ステートメントを囲む cftry タグがまだ残っていることに気付いたので、それらを外します。今、私はこのエラーが表示されます:

unsupported data conversion

だから私はデータベースに行き、新しい列を完全に削除します。以前と同様に、すべてが正しく機能するようになりました。このテーブルに新しい列を追加すると、SQL Server が何らかのデータ変換を試みているように見えますか? どこでも発生するようにフラグが立てられている場所がわかりません。

与えることができるどんな助けでも大歓迎です!

4

1 に答える 1

4

クエリで SELECT * を使用して列を取得していないことを確認してください。SELECT * を使用している場合、SQL サーバーは実行計画をキャッシュし、追加された列を返さないことがあります。

これを修正するもう 1 つの方法は、SQL サーバーが新しい実行プランを作成できるように、単純に改行などをクエリに追加することです。

いずれにせよ、パフォーマンスが低く、このような問題につながる可能性があるため、SELECT * には近づかないでください。

于 2011-02-23T19:48:40.483 に答える