2013-03-26 41 views
0

我对ColdFusion的9目录为什么放弃在Mac上的代码运行预期的结果,但不能在Windows查询?cfquery.recordcount在cfdirectory返回0,但仅适用于Windows

<cfoutput> 
<cfset fileLocation = "d:/tmp"> <!--- On mac set to /tmp ---> 
<cfdirectory 
     action = "list" 
     directory = "#fileLocation#" 
     name = "files" 
     > 
Files found #files.recordcount# <br/> 
<cfquery name="dir" dbtype="query"> 
     select * 
     from files 
     where directory = <cfqueryparam value = "#fileLocation#"> 
</cfquery> 
Query gives #dir.recordcount# 
</cfoutput> 

两台机器都运行Coldfusion 10并且存在目录。在mac上的输出是

Files found 5 
Query gives 5 

,并在Windows

Files found 5 
Query gives 0 

我缺少明显的?

+0

没有尝试您cfdirectory之后,即可看到返回的样子,然后比较? – steve 2013-03-26 17:44:25

+0

你可以CFDUMP Windows版本吗?你的CF服务是否有权限读取d:\ tmp? – BKK 2013-03-26 17:44:39

+2

尝试匹配:在查询的查询窗口上“d \ TEMP”。由于cfdirectory以窗口符号的形式返回目录,因此在您的查询中将找不到d:/ temp。 – 2013-03-26 17:46:32

回答

3

啊我的猜测是Windows报告的目录名称D:\tmp,而不是其他的斜线:D:/tmp。这就是为什么你的directory = #filelocation#没有返回任何匹配。您可能可以使这个更独立的平台as described in this article

我敢发誓,有这个在CF内置的功能了,但我似乎无法找到它。

+0

就是这样。没想到它是那样的,但有道理。谢谢!然而,作为底层的实现是Java,这应该不重要。正如你所看到的,它适用于cfdirectory。狡猾的东西这里发生内CF ... – raoulsson 2013-03-26 18:06:42

+1

*作为底层实现是Java,这不应该的问题*当问题发生时那不是。 Java对斜杠没有问题,它被查询过滤器丢弃。由于您使用的是平等比较,所以必须尊重价值差异。所有的值都是*不相等。所以零(0)记录是正确的结果。在基于Windows的系统上, – Leigh 2013-03-26 18:25:00

+1

,斜线的'方向'对于查找资源应该无关紧要。 Windows将'/'和'\'识别为路径分隔符。正如Leigh指出的那样,这个问题更可能是'D:/ temp'与'D:\ temp'之间的比较。 – 2013-03-26 18:37:48

相关问题