Повторяющиеся записи на MySQL на вставке с использованием доктрины - PullRequest
2 голосов
/ 14 мая 2010

У меня очень странная проблема с MySQL и доктриной [с помощью codeIgniter].

Я пытаюсь создать простой сценарий миграции, который берет все записи из одной таблицы и после небольшого процесса сохраняет их в другую.

Однако на моем ноутбуке [под управлением 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?

Спасибо заранее! '

1 Ответ

0 голосов
/ 14 мая 2010

Единственная возможная проблема, которую я вижу, в строке $oldrecords = $q->fetchArray();. Я бы начал там; убедитесь, что массив $oldrecords выглядит правильно, прежде чем вводить цикл foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...