Ошибка Coldfusion sql возникает только в одном экземпляре приложения

Я запускаю два экземпляра одного и того же приложения, однако только в одном я получаю сообщение об ошибке при попытке отобразить немаркированные изображения.

В журнале говорится:

Ошибка при выполнении запроса к базе данных. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, на предмет правильного синтаксиса для использования рядом с '' в строке 3. Конкретная последовательность включенных или обработанных файлов: [затенено]...images_archive.cfm, строка: 24

Строка 24 этого файла:

WHERE <cfloop query="unlabeledTags">tagID <> #ID#<cfif #currentRow# NEQ #recordCount#> AND </cfif></cfloop>

Любая помощь очень ценится


person gregorvand    schedule 21.03.2013    source источник
comment
Имейте в виду, что номера строк приблизительны. Но если бы запрос unlabeledTags был пуст, вы бы получили WHERE (nothing after it), что определенно вызвало бы синтаксическую ошибку. Но это всего лишь предположение. Невозможно сказать, не видя сгенерированный sql и значения задействованных переменных.   -  person Leigh    schedule 22.03.2013


Ответы (1)


Как сказал Ли, ваша проблема, вероятно, связана с пустым набором запросов, но чтобы немного очистить ваш код, я бы рекомендовал написать ваш SQL следующим образом.

WHERE tagID NOT IN (<cfqueryparam cfsqltype="cf_sql_integer" value="#ValueList(unlabeledTags.ID)#" list="true">)

или вы могли бы также написать это так

WHERE 1 = 1
<cfloop query="unlabeledTags">
    AND tagID <> <cfqueryparam cfsqltype="cf_sql_integer" value="#unlabeledTags.ID#">
</cfloop>

Однако разрешайте выполнение запроса только в том случае, если у вас есть количество записей в вашем запросе.

person Matt Busche    schedule 22.03.2013
comment
... и вы должны использовать cfqueryparam. Если вы придерживаетесь подхода NOT IN (...), просто добавьте атрибут list=true. - person Leigh; 22.03.2013
comment
Если имеется пустой набор запросов, этот подход также вызовет ошибку. - person Dan Bracuk; 22.03.2013
comment
@DanBracuk Only allow the query to run when you have a recordcount on your query though. - person Matt Busche; 22.03.2013
comment
Спасибо за всю помощь - попробую + очистку (унаследованную от другого программиста) и потом обновлю. - person gregorvand; 22.03.2013
comment
Ваше однострочное предложение исправило это - большое спасибо как за ответ, так и за предложения. - person gregorvand; 23.03.2013