Оператор INSERT INTO содержит следующее неизвестное имя поля - PullRequest
0 голосов
/ 12 апреля 2011

Я использую Coldfusion 9,0,0,251028 в 64-разрядной версии Windows 7 с базой данных 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 голосов
/ 12 апреля 2011

В сообщении об ошибке не указано введенное значение. В нем говорится, что поле "exp_dat" не существует в вашей таблице / представлении "новости".

Первое, что нужно сделать, это дважды проверить, есть ли поле с именем "exp_dat". Если у вас нет прямого доступа к базе данных, просто запустите запрос из ColdFusion и выведите результат запроса.

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

Возможно, кто-то присвоил этому полю псевдоним, или не включил существующее поле в представление, или оно называется "exp_dattim", или ...

0 голосов
/ 18 октября 2018

С учетом запроса INSERT, например

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

Попробуйте использовать квадратные скобки - это [] - вокруг имен столбцов, например:

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

Это сработало для меня в интерпретаторе Access SQL GUI, но может не решить специфическую ситуацию ОП (Coldfusion и т. Д.).

0 голосов
/ 20 февраля 2013

Я сталкивался с этой проблемой несколько раз, с MS Access.Я знаю, что имя столбца написано правильно и что столбец существует.Например, я могу сделать «SELECT» для столбца без проблем, но когда я пытаюсь выполнить простой SQL INSERT, я получаю эту ошибку: «... неизвестное имя поля» Я ничего не набрал, просто использовал копирование и вставку, поэтомунет шансов на опечатку.Access буквально распознает имя столбца в операторе SELECT и НЕ распознает это же имя столбца при попытке вставить.

Кажется, это ошибка в MS Access 2010.

0 голосов
/ 13 апреля 2011

Попробуйте обернуть каждое значение, вставляемое в оператор вставки, в одинарные кавычки .ie '#variable#', '#another_var#' - и так далее. Я думаю, что у меня была та же проблема, но это исправило ее.

...