CFWheels — ошибка при вставке записи с помощью метода save ()

Я получаю следующую ошибку на Railo с CFWheels при использовании save():

Невозможно выполнить оператор: невозможно записать в двоичный журнал, так как BINLOG_FORMAT = STATEMENT и по крайней мере одна таблица использует механизм хранения, ограниченный ведением журнала на основе строк. InnoDB ограничен ведением журнала строк, когда уровень изоляции транзакций READ COMMITTED или READ UNCOMMITTED.

Вот мой код:

<cfset params.vote['voteUserID'] = params.link.linkUserID />
<cfset params.vote['voteLinkID'] = params.link.linkID />
<cfset params.vote['voteType'] = 1 />

<cfset vote = model("vote").new(params.vote) />
<cfset vote.save() />

Есть идеи, что происходит? У меня есть другой оператор вставки, который похож, и он отлично работает. Я подозреваю, что это как-то связано с настройкой в ​​моей таблице базы данных? Я использую MySQL.

Спасибо.


person Michael Giovanni Pumo    schedule 19.07.2012    source источник


Ответы (2)


Используете ли вы репликацию в этой конкретной среде? Похоже, параметр BINLOG_FORMAT связан с репликацией.

Я бы порекомендовал посмотреть, где BINLOG_FORMAT установлен в MySQL, изучить различные варианты и изменить его на то, что подходит для вашего сценария.

См. этот ответ SO: Почему я получаю сообщение "Двоичная регистрация невозможна". на моем сервере MySQL?

person Chris Peters    schedule 20.07.2012

Итак, похоже, что изменение механизма хранения в таблице базы данных с «InnoDB» на «MyISAM» решило проблему. Возможно, по какой-то причине CFWheels не очень хорошо работает с «InnoDB»; возможно, кто-то мог бы добавить комментарий о том, почему это так?

person Michael Giovanni Pumo    schedule 19.07.2012
comment
Многие функции ORM CFWheels полагаются на механизм БД, который может отслеживать транзакции. (Например, вложенные свойства и обратные вызовы будут откатывать транзакцию, если они нарушат цепочку проверки или обратного вызова.) Я бы рекомендовал посмотреть, сможете ли вы решить проблему, не переключаясь на безтранзакционный MyISAM. - person Chris Peters; 20.07.2012
comment
Итак, вы рекомендуете использовать InnoDB для колес? - person Michael Giovanni Pumo; 20.07.2012
comment
да. Это помогает сохранить ссылочную целостность ваших данных. - person Chris Peters; 21.07.2012
comment
Как вы думаете, когда ошибка говорит об этом: ... по крайней мере, одна таблица использует механизм хранения, ограниченный ведением журнала на основе строк, это может означать, что мне также нужно выбрать InnoDB в качестве механизма хранения для ВСЕХ таблиц в моей базе данных? Некоторые из них уже были MyISAM, и эта таблица, в частности, была InnoDB. - person Michael Giovanni Pumo; 23.07.2012
comment
Также возможно. Вы пробовали их менять? - person Chris Peters; 23.07.2012
comment
Я еще не сделал, но я в какой-то момент сегодня, и я обновлю эту тему. - person Michael Giovanni Pumo; 24.07.2012