Я получаю очень странную ошибку базы данных, когда приложение CodeIgniter, с которым я работаю, пытается выполнить определенную операцию UPDATE.Дополнительные конъюнкты в активной записи WHERE clause: Откуда они берутся?
вызов Active Record является:
$this->db->update('eval_events',
array('eval_event_totalscore'=>$result['average_score'],
'eval_event_average_totalscore=>$result['average_score']),
array('eval_event_id'=>$eval_event_id));
И сообщил об ошибке:
Error Number: 1054
Unknown column 'id' in 'where clause'
UPDATE `eval_events` SET `eval_event_totalscore` = '40.0000', `eval_event_average_totalscore`
= '40.0000' WHERE `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` =
'581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND
`id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581' AND `id` = '581'
AND `eval_event_id` = '565'
А? Где, черт возьми, все эти дополнительные конъюнкты, связанные с «id»?
Ясно, что я не передаю их, и мое чтение CI_active_record.php
не дало мне никаких подсказок.
Три дополнительные фрагменты информации, которые могут иметь отношение:
- Этот сбой происходит только на моей машине развития, насколько я могу сказать. Запрос кажется прекрасным на производственной машине.
- Если я прокомментирую этот звонок на
update()
, то после звонокupdate()
будет поврежден точно так же. - Значение «581» имеет значение в общем контексте операции, в которой эти обновления являются частью, но это ключ в другой таблице (и в любом случае он привязан к столбцу с именем `pid`, а не` id`).
Это чувствует как активный код записи в кэше, что `id` =«581», и что-то вызывает его кашлять содержимое этого кэша из в мое UPDATE заявление в этой точке.
Я признаю, что я не понимаю, что Active Record-х start_cache()
/stop_cache()
/flush_cache()
методы действительно должны быть хорошо - но это не имеет значения, потому что grep -r
говорит мне, что нет никакого вызова start_cache()
в любом месте в кодовой базе приложения.
Только для усмешек я попробовал позвонить в $this->db->flush_cache()
непосредственно перед сбоем вызова update()
, но ничего не изменил.
Я понятия не имею, где искать рядом, чтобы попытаться понять это.
Любые идеи? Кто угодно?