0

我在 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

4 回答 4

4

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

首先要做的是仔细检查是否真的有一个名为“exp_dat”的字段。如果您没有直接访问数据库的权限,只需从 ColdFusion 中启动查询并转储查询结果。

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

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

于 2011-04-12T03:45:38.180 回答
0

尝试用单引号将您在插入语句中插入的每个值包装起来。ie '#variable#', '#another_var#'-- 等等。我想我有同样的问题,但这样做解决了它。

于 2011-04-12T21:11:49.667 回答
0

我已经多次遇到这个问题,使用 MS Access。我知道列名拼写正确并且该列存在。例如,我可以毫无问题地在列上执行“SELECT”,但是当我尝试简单的 SQL INSERT 时,我得到了那个错误:“... Unknown field name” 我什么都没输入,只是使用了复制和粘贴,所以有没有错字的机会。Access 确实可以识别 SELECT 语句中的列名,并且在尝试 INSERT 时无法识别相同的列名。

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

于 2013-02-20T18:44:03.130 回答
0

给定一个 INSERT 查询,例如

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

尝试在列名周围使用方括号 - 即 []-,如下所示:

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

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

于 2018-10-18T16:39:41.420 回答