2011-02-15 13 views
0

在我們公司生產站點的管理員處,我們有一個小小的查詢轉儲工具,並且我在不知不覺中試圖從數據庫中獲取數據,而不是主數據庫,它使用use database命令。其他人聽說過coldfusion t-sql使用數據庫的bug?

而這裏的起腳,它再製成每ColdFusion頁與它的查詢立即失敗。

,因爲它在某種程度上將緩存使用的數據庫命令。

有沒有其他人聽到這個奇怪的bug?

我們該如何阻止這種行爲?

如果我使用了「使用數據庫」命令,我想,要儘量只存在,因爲我跑,我做了後,當前查詢,返回到正常的數據庫使用。

這是奇怪的和潛在的破壞性問題。

有什麼想法?

回答

1

基比是在正確的軌道上,但是這一點進一步延伸有三個可能的解決方法:

  1. 創建由一個查詢中使用這樣的「USE數據庫」不同的DSN聲明只會持續任何使用該DSN的查詢。
  2. 取消選中CF管理員中的「保持跨客戶端請求的連接」
  3. 請始終記住要將數據庫重置爲您在請求結束時要使用的數據庫。有點不用說,這對你的生產服務器來說是一個非常危險的工具!

這不是一個錯誤,也不是真正意想不到的行爲 - 如果查詢被緩存,那麼cfquery塊內的所有內容都將繼續前進。你使用哪個數據庫平臺?

+0

是否有任何性能打擊禁用此複選框?考慮到我們可能在同一臺服務器上運行其他網站和數據庫。 – crosenblum 2011-02-15 20:45:52

2

我想,這已經是與連接池。當您致電關閉時,它不會關閉連接,只會將其放回池中。當你打開電話時,它不必打開一個新的連接,只需從池中獲取現有的連接即可。如果更改連接指向的數據庫,ColdFusion可能不知道這一點。這就是爲什麼有些平臺(例如.Net上的MySQL)每次從池中檢索連接時重置連接,以確保查詢正確的數據庫並確保您沒有任何臨時表和其他會話信息掛在身邊。這種行爲的不利之處在於它必須往返數據庫,即使在使用池連接時,這可能並不是必需的。

相關問題