2013-03-26 1 views
0

Coldfusion 9의 디렉토리에 대한 쿼리가 있습니다.이 코드가 예상되는 결과를 제공하지만 Mac에서는 실행되지 않는 이유는 무엇입니까?cfquery.recordcount는 cfdirectory에서 0을 반환하지만 창에만 있습니다.

<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을 실행하며 디렉토리가 존재합니다. 맥의 출력은

Files found 5 
Query gives 5 

창문

Files found 5 
Query gives 0 

나는 분명 실종에

입니까?

+0

cfdirectory 바로 다음에 답장을보고 비교 한 후 비교해 보았습니까? – steve

+0

Windows 버전을 CFDUMP 할 수 있습니까? CF 서비스가 d : \ tmp에서 읽을 권한이 있습니까? – BKK

+2

쿼리 쿼리에서 Windows의 "d : \ temp"와 일치하는 항목을 찾습니다. cfdirectory는 Windows 표기법으로 디렉토리를 반환하므로 d :/temp는 쿼리에서 찾을 수 없습니다. –

답변

3

내 생각에 windows는 다른 슬래시 대신 D:\tmp이라는 디렉토리 이름을보고합니다. D:/tmp. 그래서 directory = #filelocation#이 일치하는 항목을 반환하지 않습니다. 이 플랫폼을 더 독립적으로 만들 수 있습니다. as described in this article.

CF에 내장 된 기능이 있음을 알았지 만 찾을 수없는 것 같습니다.

+0

그게 전부입니다. 그것이 그럴 것이라고 기대하지는 않았지만 의미가 있습니다. 감사! 그러나 기본 구현이 Java이므로이 것이 중요하지 않습니다. 보시다시피, cfdirectory에서 작동합니다. 여기에 CF에서 무언가 대처가 일어나고 있습니다 ... – raoulsson

+1

* 기본 구현이 Java이므로이 것은 중요하지 않습니다. * 문제가 발생한 곳이 아닙니다. Java는 슬래시에 아무런 문제가 없으며 쿼리 필터에 의해 삭제됩니다. 당신이 평등 비교를 사용하고 있기 때문에, 가치의 차이는 분명히 존중되어야합니다. 결국 모든 값은 같지 않습니다. 그래서 영 (0) 레코드가 올바른 결과입니다. – Leigh

+1

Windows 기반 시스템에서는 슬래시의 '방향'이 리소스를 찾는 데 중요하지 않습니다. Windows는 '/'및 '\'를 경로 구분 기호로 인식합니다. Leigh가 지적했듯이이 문제는 'D :/temp'와 'D : \ temp'의 비교 가능성이 높습니다. –