新服务器上的关系映射出错

时间:2013-04-24 15:29:09

标签: orm coldfusion coldfusion-9

我刚将自定义构建的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()来确保它已正确更新。

1 个答案:

答案 0 :(得分:0)

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

我在所有ormReload()文件的顶部都有一些旧的.cfc次调用,因为这样可以让一些事情发挥作用;通过删除这些调用,它现在正确加载。

相关问题