INSERT INTO 语句包含以下未知字段名称
Posted
技术标签:
【中文标题】INSERT INTO 语句包含以下未知字段名称【英文标题】:INSERT INTO statement contains following unknown field name 【发布时间】:2011-04-12 01:01:08 【问题描述】:我在 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”周围的任何空格。
【问题讨论】:
【参考方案1】:给出的错误消息没有抱怨插入的值。它指出字段“exp_dat”在您的表/视图“新闻”中不存在。
首先要做的是仔细检查是否真的有一个名为“exp_dat”的字段。如果您没有直接访问数据库的权限,只需从 ColdFusion 中启动查询并转储查询结果。
<cfquery name="getSomeRowsFromNewsTable" datasource="#db#" maxrows="10">
select * from news
</cfquery>
<cfdump var="#getSomeRowsFromNewsTable#" abort="true">
也许有人给该字段起别名,或者没有在视图中包含现有字段,或者它被称为“exp_dattim”,或者...
【讨论】:
我运行了一个获取所有行的 select 语句,然后:我已经多次遇到这个问题,使用 MS Access。我知道列名拼写正确并且该列存在。 例如,我可以毫无问题地在列上执行“SELECT”,但是当我尝试简单的 SQL INSERT 时,我得到了那个错误:“... Unknown field name” 我没有输入任何内容,只是使用复制和粘贴,所以没有错字的机会。 Access 确实可以识别 SELECT 语句中的列名,并且在尝试 INSERT 时无法识别相同的列名。
这似乎是 MS Access 2010 中的一个错误。
【讨论】:
我也可以在 2007 年确认这个错误。我如何解决这个错误是我注意到 Access 将有助于将查询设计器中的列重命名为它想要的名称。如果我更改了表中的列名以匹配它,那么插入查询将运行得很好。【参考方案3】:尝试将插入语句中插入的每个值都用单引号括起来。即'#variable#', '#another_var#'
-- 等等。我想我有同样的问题,但这样做解决了它。
【讨论】:
【参考方案4】:给定一个 INSERT 查询,例如
INSERT INTO tblname ('column1', 'column2', 'column3' ...) VALUES ...
尝试在列名周围使用方括号 - 即 []-,如下所示:
INSERT INTO tblname ([column1], [column2], [column3] ...) VALUES ...
这在 Access SQL GUI 解释器中对我有用,但可能无法解决 OP 的特定情况(Coldfusion 等)。
【讨论】:
以上是关于INSERT INTO 语句包含以下未知字段名称的主要内容,如果未能解决你的问题,请参考以下文章
asp.net 中的 INSERT INTO 语句中的语法错误