2013-02-23 2 views
1

Я только что установил CF10, win2008, IIS 7.5 с помощью mysql 5.6. Но мы получаем эту ошибку:CF10, MYSQL SQL_SELECT_LIMIT = DEFAULT

Error Executing Database Query. 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT 

Эта ошибка удаляется, когда я явно установить «LIMIT» на запросы.

(Обновление от комментариев)

Вот пример:

<cfquery name="dds" datasource ="#Request.Datasource#"> 
    SELECT * 
    FROM tblaccounts 
    LIMIT 100 
</cfquery> 

Насколько мои исследования показывают, что это несовместимость с новой версии MySQL 5.6.

+7

PL разместим ваш запрос, который дает вам ошибку – Meherzad

+0

его во всех запросах – tan369

+0

Как мы можем получить, где ошибка, не видя запросы? PL отправлять все запросы – Meherzad

ответ

16

Заимствуя некоторые из приведенных выше более подробно ответы:

Мы с той же проблемой, и она была установлена ​​путем обновления файла JDBC. Начиная с ColdFusion 10 only supports MySQL 5.0 and 5.1, вам необходимо обновить Connector, как указано выше.

Чтобы обновить JDBC Connector на вашей машине Windows,

  1. Получить разъем .zip от the link provided above
  2. Откройте зип архив и найдите MySQL-разъем-Java-5.1.23-bin.jar
  3. Скопируйте этот .jar файл C: \ ColdFusion10 \ cfusion \ Lib \
  4. Open Services (Пуск> Панель управления [Дополнительно]> Администрирование> Службы)
  5. Стоп/Запуск «ColdFusion 10 Применение в сервер "

Чтобы проверить, что новый .jar был распознан ColdFusion, войдите в свой администратор ColdFusion, нажмите« Сводка параметров »в разделе« Настройки сервера ». Найдите «mysql». Вы должны увидеть файл .jar, указанный в разделе «Путь классов Java CF Server». Нет необходимости переустанавливать источники данных. Эти изменения должны применяться автоматически.

+0

Странно, я пробовал этот путь, прежде чем публиковать здесь вопрос, и это не сработало для меня. После этого обновления мои источники данных не были распознаны и т. д., и я вернулся к старому коннектору и должен был переустановить CF, чтобы забрать мои источники данных.Но я просто попробовал это снова и работает до сих пор. Спасибо за помощь. – tan369

+0

Эта первая ссылка, похоже, была обновлена, так как упоминает поддержку 5.6. – bejs

0

MySQL осуждается SET OPTION давно, см docs, и он был удален в 5.6 Вы должны использовать SET без заявления OPTION,

SET SQL_SELECT_LIMIT = 100;

будет делать то, что вы хотите.

Помните, что это устанавливает значение по умолчанию для одного соединения. Для того, чтобы убедиться, что ваш последующий запрос использует то же самое соединение обернуть их в <cftransaction>

<cftransaction> 
    <cfquery name="tmp" datasource ="#Request.Datasource#"> 
    SET SQL_SELECT_LIMIT = 100; 
    </cfquery> 
    <cfquery name="dds" datasource ="#Request.Datasource#"> 
    SELECT * 
    FROM tblaccounts; 
    </cfquery> 
</cftransaction> 

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

+0

Я бы рекомендовал вместо этого использовать стандартный 'limit'. 'sql_select_limit' - настройка уровня сеанса. После того, как вы примените его, он сохраняется для жизни соединения db. Поэтому, если пул соединений включен, есть хорошая вероятность, что соединение будет повторно использовано, а предел применяется к совершенно несвязанному запросу. Вместо этого безопаснее использовать стандартный оператор 'LIMIT', поскольку он применяется только к отдельному запросу. Тем не менее, я не уверен, что они явно используют параметр «set option ...». Конечно, первоначальный вопрос не совсем ясен, так или иначе. – Leigh

+0

Странно, что даже вариант, уже устаревший в 5.0, все еще используется в MySQL Java Connector для 5.1 (5.1.12). Во всяком случае, последний соединитель (5.1.24) исправлен, чтобы не использовать SET OPTION. – YudhiWidyatama

2

Насколько я понимаю, другой вариант должен состоять в том, чтобы обновить драйвер JDBC до latest MySQL JDBC Driver. Инструкции можно найти по адресу using the latest JDBC driver here: (хотя инструкции могут быть немного старыми, они все равно будут работать одинаково).

FYI ColdFusion 10 only supports MySQL 5.0 and 5.1.

+0

обновление драйвера jdbc не изменит тот факт, что 'SET OPTION' недействителен в mysql 5.6 –

+0

Привет, ребята, я обновился до последнего драйвера, но вызвал всевозможные проблемы, когда CF не распознавал источники данных. @pete прямо сейчас, когда я устанавливаю «Пределы» на мои запросы, все работает хорошо, вы думаете, что это плохая практика? мы должны инвестировать в понижение нашего mysql до 5.1, PS очень благодарен за руководство по блокированию cf10, потрясающий материал. – tan369

+1

@ChrisBlackwell Он не использует SET OPTION в своем коде, это делается внутри драйвера JDBC –

1

Спасибо большое Кларк - мы просто была такая же проблема с CF9

Это на самом деле относится к CF9, а также. Шаг 3: Скопируйте этот .jar-файл в C: \ ColdFusion9 \ lib \ Шаг3a Переименуйте старый драйвер mysql-connector-java-commercial-5.1.11-bin.jar.old В противном случае драйверы могут конфликтовать. (произошло до этого)

После обновления ошибка, похоже, исчезла. :)

Смежные вопросы