2010-05-14 4 views
2

mysql과 doctrine [codeIgniter의 도움으로]에 매우 이상한 문제가 있습니다.doctrine을 사용하여 삽입시 mysql에 중복 된 항목이 있습니다

하나의 테이블에서 모든 레코드를 가져 와서 간단한 프로세스 후에 다른 테이블로 저장하는 간단한 마이그레이션 스크립트를 만들려고합니다.

그러나 내 랩톱에서 [실행중인 Windows 및 Wamp]에서 원본 테이블 레코드의 이중 번호가 대상 테이블에 복사되도록했습니다. 내 동료의 랩톱에서는 모든 것이 잘 작동합니다! 우리는 모두 mysql 5.0.86 [plus plus wamp]를 사용하고 있습니다. 그렇게 단순

function buggy_function(){ 

      $this->db(); //get db connection 
      $q = Doctrine_Query::create()->from('Oldtable r'); 
      $oldrecords = $q->fetchArray(); 
      $count = 0; 

    foreach ($oldrecords as $oldrecord){ 

     $newrecord = new NewTableClass(); 
       $newrecord->password = md5($oldrecord['password']);   
     $newrecord->save();  
     echo $newrecord->id. ' Id -> saved.'  
     }  

    } 

: 여기

코드입니다! 나는 올드 테이블에 39 개의 레코드를 가지고 있으며 고유 한 기본 키를 제외하고 정확히 동일한 레코드 인 새로운 테이블에 78 개의 레코드를 얻고 있습니다.

마치 스크립트가 두 번 실행되는 것처럼 보입니다. 그러나 스크립트의 출력은 다음과 같습니다.

1 Id -> saved. 

2 Id -> saved. 
... 
... 

39 Id -> saved. 

왜 이런 일이 발생하는지 알고 있습니까? mysql에 대해 알려진 버그?

고맙습니다. '

+0

중복 요청이라고 말하고 싶습니다. 행의 작성 순서는 무엇입니까? 두 개의 동일한 행이 서로 옆에 있습니까 (자동 증분 방식)? –

답변

0

제가 볼 수있는 유일한 문제는 $oldrecords = $q->fetchArray();입니다. 나는 거기에서 시작할 것이다. foreach 루프를 입력하기 전에 $oldrecords 배열이 올바르게 보이는지 확인하십시오.

관련 문제