2012-07-19 4 views
1
) (저장 사용할 때이 CFWheels와 라일로에 다음과 같은 오류가

와 기록을 삽입 : BINLOG_FORMAT = STATEMENT 이후 바이너리 로그에 기록하는 것은 불가능하고 :CFWheels - 오류 저장() 메소드

는 는

문을 실행할 수 없습니다 적어도 하나의 테이블은 행 기반 로깅으로 제한된 스토리지 엔진 을 사용합니다. 트랜잭션 격리 수준이 READ COMMITTED 또는 READ COMMUNICATION이 아니면 InnoDB는 행 로깅으로 제한됩니다. 무슨 일이 일어나고 있는지

<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() /> 

어떤 생각 :

여기 내 코드? 비슷한 삽입 문장이 있는데 잘 작동합니다. 나는 그것이 내 데이터베이스 테이블에 seTting과 관련이 있다고 의심한다. MySQL을 사용하고 있습니다.

감사합니다.

답변

0

Ok, 데이터베이스 테이블의 저장소 엔진을 "InnoDB"에서 "MyISAM"으로 변경하여 문제가 해결 된 것 같습니다. 아마도 CFWheels는 어떤 이유로 InnoDB와 잘 작동하지 않을 것입니다. 누군가가 왜 그런지에 대한 의견을 추가 할 수 있습니까?

+0

많은 트랜잭션을 추적 할 수있는 DB 엔진에 의존하고 있습니다. 예를 들어, 중첩 된 속성과 콜백은 유효성 검사 또는 콜백 체인을 위반하는 경우 트랜잭션을 롤백합니다. 트랜잭션이없는 MyISAM으로 전환하지 않고 문제를 해결할 수 있는지 확인하는 것이 좋습니다. –

+0

실제로 InnoDB를 바퀴에 사용하는 것이 좋습니다. –

+0

예. 데이터와의 참조 무결성을 유지하는 데 도움이됩니다. –

2

이 특정 환경에서 복제를 사용하고 있습니까? BINLOG_FORMAT 설정이 복제와 관련되어있는 것 같습니다.

MySQL에서 BINLOG_FORMAT이 설정된 곳을 찾는 것이 좋습니다. 다양한 옵션이 무엇인지 조사하고 시나리오에 적합한 것으로 변경하십시오.

이 그렇게 대답을 참조하십시오 : Why do I get 'Binary logging not possible.' on my MySQL server?는 CFWheels의 ORM 기능