2011-04-12 3 views
0

Windows 7 64 비트에서 Microsoft Access 97 데이터베이스와 함께 Coldfusion 9,0,0,251028을 사용하고 있습니다. 나는이 쿼리를 실행하면INSERT INTO 문에 다음 알 수없는 필드 이름이 포함되어 있습니다.

는 :

<cfquery name="put_in_info" datasource="#db#"> 

     insert into news 

        (is_current, display, mes_dat,mes_tim,mes_sub,mes_text,scrollshow,exp_dat) 

     values 

    (1,1, #createodbcdate(now())#, #createodbctime(now())#, '#subject#', '#message#',1, #session.expdate#) 

</cfquery> 

을이 오류를 얻을 :

Error Executing Database Query. 

[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] The INSERT INTO statement contains the following unknown field name: 'exp_dat'. Make sure you have typed the name correctly, and try the operation again. The error occurred in H:\Inetpub\pvalert.com\listserver\admin\templates\post_breaking.cfm: line 26 
Called from H:\Inetpub\pvalert.com\listserver\admin\new_process.cfm: line 54 
Called from H:\Inetpub\pvalert.com\listserver\admin\templates\post_breaking.cfm: line 26 
Called from H:\Inetpub\pvalert.com\listserver\admin\new_process.cfm: line 54 

24 :  (is_current, display, mes_dat,mes_tim,mes_sub,mes_text,scrollshow,exp_dat) 

25 : values 

26 : (1,1, #createodbcdate(now())#, #createodbctime(now())#, '#subject#', '#message#',1, #session.expdate#) 

27 : </cfquery> 

28 : 

VENDORERRORCODE 


    -1507 

SQLSTATE 


    HYS22 

SQL 


    insert into news (is_current, display, mes_dat,mes_tim,mes_sub,mes_text,scrollshow,exp_dat) values (1,1, {d '2011-04-11'}, {t '17:49:09'}, 'Test message - please ignore', 'This is a test message, please ignore. ',1, {ts '2011-05-15 00:00:00'}) 

DATASOURCE 


    rpv_list 

Exp_dat 내가 업데이트해야 할 테이블의 만료 날짜 열입니다.

"세션"을 삭제하려고했습니다. expdate 변수에, 그리고 아무것도하지 않았다. 마찬가지로 24 행의 "exp_dat"주위의 공백을 제거합니다.

답변

4

주어진 오류 메시지는 삽입 된 값에 대해 불평하지 않습니다. "exp_dat"필드가 테이블/뷰 "뉴스"에 존재하지 않는다고 나와 있습니다.

먼저해야 할 일은 실제로 "exp_dat"라는 필드가 있는지 다시 확인하는 것입니다. 데이터베이스에 직접 액세스 할 수없는 경우 ColdFusion 내에서 쿼리를 실행하고 쿼리 결과를 덤프하면됩니다.

<cfquery name="getSomeRowsFromNewsTable" datasource="#db#" maxrows="10"> 
select * from news 
</cfquery> 
<cfdump var="#getSomeRowsFromNewsTable#" abort="true"> 

아마 누군가가 당신이 당신의 삽입 문에 삽입 할 때마다 값을 래핑하는 ...

+0

MS 액세스에서 버그가 수 있도록 나타납니다 DISPLAY, ** EXP_DAT **, ID, IS_CURRENT, MES_DAT, MES_SUB, MES_TEXT, MES_TIMT, MES_TIM, SCROLLSHOW 열이있는 것 같습니다. –

0

시도를 필드 별칭 또는 뷰에서 기존 필드를 포함하지 않았다, 또는 "exp_dattim"라고, 또는 작은 따옴표로. '#variable#', '#another_var#' - 등등. 나는 똑같은 문제가 있다고 생각하지만, 그렇게하면 해결할 수있다.

0

저는 MS Access에서이 문제를 여러 번 실행했습니다. 열 이름의 철자가 정확하고 열이 있음을 알고 있습니다. 예 : 열에 'SELECT'를 아무 문제없이 수행 할 수 있지만 간단한 SQL INSERT를 시도 할 때 오류가 발생합니다. "알 수없는 필드 이름" 아무 것도 입력하지 않고 그냥 복사 및 붙여 넣기를 사용합니다. 따라서 오타가 발생할 가능성은 없습니다. Access는 문자 그대로 SELECT 문에서 열 이름을 인식하고 INSERT를 시도 할 때 동일한 열 이름을 인식하지 않습니다. <하는 cfdump VAR = "#의 get_info.columnlist 번호"> 얻은 :

는 내가 모든 행과를 얻을 수 SELECT 문을 실행 2010 년

+0

2007 년에도이 오류를 확인할 수 있습니다. 내가이 오류를 어떻게 극복했는지는 Access가 쿼리 디자이너의 열을 유용하게 바꾸고 싶다는 것을 알게되었습니다. 테이블의 열 이름을 변경하여 일치 시키면 Insert 쿼리가 제대로 실행됩니다. – dmaruca