Pergunta

Eu estou usando UnixODBC com PHP 5.2.4 no Ubuntu 8.04 LTS e tentando puxar todos os resultados de uma mesa sentado em um IBM i e replicá-las para uma tabela MySQL local.

Código-wise ele está funcionando sem erros, mas eu estou terminando com mais linhas que o que está contido no IBM i.

Eu deveria acabar com 25,613 linhas, mas PHP relata que 25.630 linhas estão sendo inseridos no banco de dados MySQL:

$counter = 0;
while($row = odbc_fetch_array($result)) {
    //Insert into MySQL using Zend Framework
    $counter++;
}
echo $counter;

Quando olho no banco de dados MySQL algumas das linhas são realmente duplicados. Eu vi uma nota sobre a odbc_fetch_array () documentação sobre o comportamento errático ao acessar o IBM i, mas tentar essa solução faz com que o script para correr e correr sem nunca parecer ao fim.

Algumas ideias sobre o que verificar?

Foi útil?

Solução

É a mesma linhas que estão sendo duplicados de cada vez? Se assim for, há algo único sobre esses registros que poderiam dica sobre por que eles são duplicados?

Talvez usar outra ligação para a obtenção de resultados - como odbc_fetch_row(). O que faz odbc_num_rows() digamos?

Estas e outras técnicas podem ajudá-lo a zona no bug.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top