INSERT INTO语句包含以下未知字段名称

时间:2011-04-12 01:01:09

标签: ms-access coldfusion insert ms-jet-ace

我在Windows 7 64位上使用Coldfusion 9,0,0,251028,带有Microsoft Access 97数据库。

当我运行此查询时:

<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 个答案:

答案 0 :(得分:4)

给出的错误消息不会抱怨插入的值。它声明您的表/视图“新闻”中不存在“exp_dat”字段。

要做的第一件事是仔细检查是否确实存在名为“exp_dat”的字段。如果您无法直接访问数据库,只需从ColdFusion中启动查询并转储查询结果。

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

也许有人别名该字段,或者未在视图中包含现有字段,或者称为“exp_dattim”,或者......

答案 1 :(得分:0)

尝试用insert quotes.ie '#variable#', '#another_var#'包装您在insert语句中插入的每个值 - 依此类推。我想我遇到了同样的问题,但这样做就解决了这个问题。

答案 2 :(得分:0)

我使用MS Access多次遇到过这个问题。我知道列名拼写正确并且列存在。 E.G.,我可以在列上做一个'SELECT'没有问题,但是当我尝试一个简单的SQL INSERT时,我得到了这个错误:“......未知字段名称” 我没有打字,只是使用了复制和粘贴,所以没有机会输入错字。 Access确实识别SELECT语句中的列名,并且在尝试INSERT时不识别相同的列名。

它似乎是MS Access 2010中的错误。

答案 3 :(得分:0)

给出INSERT查询,例如

INSERT INTO tblname ('column1', 'column2', 'column3' ...) VALUES ...

请尝试在列名称周围使用方括号-,即[]-,

INSERT INTO tblname ([column1], [column2], [column3] ...) VALUES ...

这在Access SQL GUI解释器中对我有用,但可能无法解决OP的特定情况(Coldfusion等)。