2013-04-24 59 views
2

我剛將一個定製的CMS移到了一個活動的服務器上(它位於開發服務器上),因爲它更容易設置RSS。問題是我的關係映射不再工作,儘管我改變了application.cfclocation以反映新的路徑。它也使用絕對路徑。該設置是像這樣:關於新服務器上的關係映射的錯誤

F:\...\cmsRoot\com\dac(這是原來的路徑)
F:\...\cmsRoot\admin\com\dac(這是新的服務器上的路徑,唯一的區別就是admin文件夾額外的層;驅動器號是相同的。)

Application.cfc和大多數頁面分別位於cmsRootcmsRoot\admin文件夾中。 dac文件夾包含我的關係型CFC文件。

最初,裝載每個CFC首次當ColdFusion的將拋出一個錯誤說
"Error Occurred While Processing Request
Cannot load the target CFC abc for the relation property abc in CFC xyz

每個關係映射(我評論他們出去,以確保每一個有同樣的問題)。

在我將<cfscript>ORMReload();</cfscript>行添加到每個CFC文件的開頭之後,我可以通過該錯誤並訪問登錄頁面。不過,現在我得到一個錯誤,任何時候,我嘗試創建一個實體:
Mapping for component abc not found.

調用它(並引發錯誤)的第一個實例是這樣的:
objectABC = EntityToQuery(EntityLoad("abc", {ActiveInd=1}));

我已經已經在stackoverflow上搜索了任何相關的問題,並幫助我通過添加ORMReload()調用來修復原始錯誤。但是,這並不能解決目前的問題。我已經改變了CFC的映射(在Application.cfc)使用相對路徑,這也沒有幫助(因爲我認爲這可能是一個映射問題)。我還檢查了文件夾權限以確保它們匹配,因爲有一位用戶表示解決了他們的問題。這兩個文件夾也具有相同的權限。

這裏的任何有用的信息Application.cfc,如果這能幫助:

this.ormsettings = { cfclocation = ["F:\...\cmsRoot\admin\com\dac", "F:\...\cmsRoot\admin\com"] 
        , dialect="MicrosoftSQLServer" 
        , eventHandling = true 
        }; 

我可以在這兩個服務器上的文件Application.cfc之間找到的唯一區別是文件路徑。數據庫設置正確,頁面本身沒有問題(我知道)。

我發現的另一件事是,註釋掉任何關係映射都會導致一切正常加載(減去任何objectABC.getXYZ()調用,因爲我刪除了這些屬性)。

我也重新啓動了Coldfusion應用服務器,但沒有明顯的區別。

文件結構中更遠的Application.cfc是否有可能覆蓋我設置的任何cfclocation設置?我不認爲這會是這種情況,但由於我的Application.cfc似乎沒有什麼不對,所以我沒有想法。並且application.cfc/.cfm查找順序(在CFIDE管理員的「設置」下)對於兩者都是相同的;設爲默認。

我也嘗試刪除多餘的文件夾層(因此所有映射都是相同的),但錯誤是相同的。

更新:通過爲/ cmsRoot(對F:... \ cmsRoot)添加特定的映射,我得到一個新的錯誤,即組件不是持久的。然而,像這樣我所有的CFC的開始:

component persistent = "true" entityName = ..... 

是否有一個原因,ColdFusion的會認爲實體都沒有,即使我另有界定它執着?是的,我已使用ormReload()以確保它已正確更新。

回答

0

我找到的解決方案是通過在我的Application.cfc文件中使用application.mappings['\cmsRoot'] = 'F:\...\cmsRoot';將特定映射添加到cmsRoot文件夾。

我有一些舊的ormReload()調用在所有.cfc文件的頂部,因爲這允許一些事情工作;通過刪除那些現在正確加載的調用。