Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Henrique Cota

Erro: MySQL server has gone away

Recommended Posts

Pessoal,

Estou utilizando o código abaixo para gravar no banco de dados algumas informações (banco esta na locaweb), porém da o erro: MySQL server has gone away

 

 

<?php
include("conexao.php");
ini_set("allow_url_fopen", true);
set_time_limit(12000);
$querySelect = mysql_query("SELECT CNPJ, NOME FROM EmpresasPrivadas ORDER BY NOME") or die(mysql_error());
while($array = mysql_fetch_array($querySelect))
{
       $site = "https://www3.bcb.gov.br/iftimagem/IFTServlet?operacao=buscaquadro&codquadro=7002&nomequadro=BALANCO%20PATRIMONIAL&cnpj=".str_replace('.','',$array['CNPJ'])."&ano=2011&trimestre=1&nomeInstituicao=".$array['NOME']."";
       $DOMDocument = new DOMDocument( '1.0', 'utf-8' );
   $DOMDocument->loadHTML( file_get_contents($site) );         
       $xpath = new DOMXPath( $DOMDocument );
       $rows = array();
       foreach ( $xpath->query( './/table[@cellspacing=1]/tr' ) as $tr ) 
       {
       $cols = array();
       $td = null;
       $tds = $tr->getElementsByTagName( 'td' );
       $i = 0;
       while ( ( $td = $tds->item( $i++ ) ) !== null ) 
               {
                       $cols[] = $td->nodeValue;
       }
               $rows[] = $cols;
       }
       foreach ($rows as $i =>$value) 
       {               
               $queryInsert = "insert into balanco_privado (Codigo,Empresa, Trimestre,Ano, Conta, Nome, Valor) values ('".str_replace('.','',ltrim($array['CNPJ']))."','".ltrim($array['NOME'])."','1','2011','".str_replace('Â','',ltrim($rows[$i][0]))."','".str_replace('Â','',ltrim($rows[$i][1]))."','".str_replace('Â','',ltrim($rows[$i][2]))."');";
               $resultado = mysql_query($queryInsert,$conexao) or die (mysql_error());         
               if (mysql_num_rows($resultado)>0)
               {
                  print "Insert executado com sucesso!";
               }
               else
               {
                  print "Não foi possível executar o insert!";
               }
                       echo "<br>";
       }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, primeiramente faço um Select e nele tem mais de dois mil registros, para cada registro é necessário acessar uma pagina atraves dos parametros e pegar os dados e gravar no banco de dados. Caso eu coloco um condição no select para buscar somente um registro, funciona corretamente. OU seja, os dados de conexão estão correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... possibilidades:

 

- O servidor MySQL esta caindo por algum motivo que não sabemos;

- O Firewall ou um IPS esta bloqueando sua conexão por achar que é um ataque;

 

Estas são minhas sugestões para o momento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observei que em sua query você está inserindo no campo 'Codigo' o valor do CNPJ

$array['CNPJ']

.

 

Verifique as chaves desta tabela (balanco_privado) e o tamanho deste campo Codigo, pois CNPJ é um número grande e pode ser que você tenha colocado o campo Codigo com tamanho inferior, se for chave deve atentar mais ainda. Se estiver extrapolando o valor o mysql pode travar em algumas situações, na maioria deve retornar o erro de tamanho e continuar. Mas se for erro de chave ele trava, com esta mensagem que postou.

Outra possibilidade, seguindo o mesmo pensamento acima:

Você utilizou o cnpj retirando apenas os pontos ("."), mas se sua máscara for completa deveria retirar as barras e traços. Sendo assim inserir strings em campos númericos (Codigo) no mysql pode ocasionar travamento dependendo das configurações do servidor mysql. Na maioria dos casos retornaria erro de tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.