我剛將一個定製的CMS移到了一個活動的服務器上(它位於開發服務器上),因爲它更容易設置RSS。問題是我的關係映射不再工作,儘管我改變了application.cfclocation
以反映新的路徑。它也使用絕對路徑。該設置是像這樣:關於新服務器上的關係映射的錯誤
F:\...\cmsRoot\com\dac
(這是原來的路徑)
F:\...\cmsRoot\admin\com\dac
(這是新的服務器上的路徑,唯一的區別就是admin文件夾額外的層;驅動器號是相同的。)
Application.cfc
和大多數頁面分別位於cmsRoot
和cmsRoot\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()
以確保它已正確更新。