CodeIgniter 응용 프로그램에서 특정 UPDATE 작업을 시도 할 때 매우 이상한 데이터베이스 오류가 발생합니다.활성 레코드의 추가 결합 WHERE 절 : 어디서 오는가?
$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
의 독서에서 나에게 단서를 제공하지 못했습니다. 관련 될 수있는 정보의
추가로 3 개 조각 :이 오류는 지금까지 내가 말할 수있는, 내 개발 컴퓨터에 무슨 일이 일어나고
- . 프로덕션 시스템에서 쿼리가 정상적으로 처리 된 것 같습니다.
- 이 전화를
update()
에게 보내면 다음에 전화가 오는 경우 정확히 똑같은 방식으로 손상됩니다. - 값 '581'은 이러한 업데이트가 포함 된 작업의 전체 컨텍스트에서 중요하지만 다른 테이블의 키입니다 (어쨌든 `pid`이 아닌` id`).
그것은 활성 기록 코드와 같은을 느낀다는 그`id` = '581'캐쉬하고, 뭔가가 밖으로이 시점에서 내 UPDATE 문에 그 캐시의 내용을 기침을 일으키는 원인이된다.
내가 정말 좋은 있어야하는 액티브 어떤 기록의start_cache()
/
stop_cache()
/
flush_cache()
방법을 이해하지 못하고 있음을 인정한다
- grep -r
어디 start_cache()
에 더 전화가 없다는 것을 나에게 알려주기 때문에,하지만 그건 문제가 안된다 응용 프로그램의 코드베이스에서.
그냥 웃어 보려고했는데 update()
호출 바로 전에 $this->db->flush_cache()
에 전화를 걸었지만 아무것도 변경하지 않았습니다.
나는 이것을 알아 내려고 다음으로 어디를보아야할지 모른다.
아이디어가 있으십니까? 누군가?