2010-05-14 55 views
2

我面臨一個非常奇怪的問題與MySQL和教條[在codeIgniter的幫助下]。插入使用原則的mysql上的重複條目

我想做一個簡單的遷移腳本,從一個表中取出所有記錄,並在一個小的過程之後,將它們保存到另一個表中。

但是,在我的筆記本電腦上[運行windows和wamp],我得到了原始表記錄的兩倍數目,以便將其複製到目標表中。在我同事的筆記本電腦中,一切正常!我們都使用mysql 5.0.86 [加上windows加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

我想說這是一個重複的請求。什麼是行的創建順序?兩個相同的行是否相鄰(自動遞增)? – 2010-05-14 16:26:21

回答

0

我看到的唯一可能的問題是在行$oldrecords = $q->fetchArray();。我會從那裏開始;在進入foreach循環之前檢查以確保$oldrecords陣列看起來正確。