2011-02-23 63 views
1

我正在使用MS SQL Server 2005在Windows服務器上使用ColdFusion 9.我遇到了一個奇怪的問題。MS SQL服務器表更改後出現奇怪的coldfusion錯誤

我正在通過查詢數據庫中的表創建對象,獲取必要的信息並從結果中構建對象。所以,如果我的表有這些列:

id 
name 
address 

我創造與方法,如get_id(),GET_NAME(),get_address()等對象的所有這工作得很好,當我查詢這些方法,我得到我期望的結果。

但現在我進去換桌子。我添加了一個新的列,如「城市」。一切正常,對象仍然實例化。但是現在我進入並將一些數據放入新列。現在我的對象實例化不再起作用。我收到的一般錯誤是這樣的:

element ADDRESS is undefined in instance 

我注意到,我仍然有各地的CFQUERY聲明包裹cftry標籤,所以我把這些關閉。現在我看到這個錯誤:

unsupported data conversion 

所以我去數據庫,我完全刪除新列。現在一切正常,像以前一樣。所以,當我向這個表中添加一個新列時,SQL Server正在試圖對其進行某種數據轉換?我沒有看到我所擁有的標誌在哪裏發生。

任何可以給予的幫助將不勝感激!

+0

這個cfc是否從另一個cfc繼承,這些錯誤可能在那裏發生。 – 2011-02-23 19:43:04

+0

我發佈了我認爲可能是下面正確的答案,但我們確實需要更多信息才能很好地確定問題。線上的代碼會拋出錯誤?你的SQL是如何構建的?你的方法如何生成(手動,onMissingTemplate())?越多的信息越好。 – 2011-02-23 19:56:15

+0

@丹 - 你對SELECT *的回答是我所需要的。謝謝! – Gary 2011-02-23 20:56:52

回答

4

檢查以確保您的查詢不使用SELECT *獲取列。如果您使用SELECT *,SQL Server可以緩存執行計劃並且不會返回已添加的列。

解決這個問題的另一種方法是簡單地在查詢中添加換行符或其他任何內容,以便SQL服務器將創建新的執行計劃。

無論哪種方式,遠離SELECT *,因爲它性能較差,並且肯定會導致類似的問題。

+0

這是問題,我正在使用SELECT *。非常感謝! – Gary 2011-02-23 20:01:41

+0

+1令人驚歎的心靈故障排除 – Antony 2011-02-24 00:52:04

相關問題