Ir ao conteúdo

Posts recomendados

Postado

Bom dia!

 

Estou com um problema em uma requisição de um script que importo informações de uma DB de uma imobiliária para outra. A questão que antes, em ambiante Windows o script funcionava sem problemas, agora que estou migrando para um ambiente Linux está aparecendo a seguinte mensagem: Data truncated for column 'codigo' at row 1.

 

Acredito que seja algo relacionada as versões do PHP ou MySQL.

 

Estrutura da tabela `imoveis`
--

CREATE TABLE `imoveis` (
  `id` int(11) DEFAULT NULL,
  `codigo` int(11) DEFAULT NULL,
  `tipo` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `link` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `endereco` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `bairro` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `fotos` int(11) DEFAULT NULL,
  `finalidade` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `descricao` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `quartos` varchar(2) COLLATE latin1_general_ci DEFAULT NULL,
  `suites` varchar(2) COLLATE latin1_general_ci DEFAULT NULL,
  `banheiros` varchar(2) COLLATE latin1_general_ci DEFAULT NULL,
  `garagens` varchar(2) COLLATE latin1_general_ci DEFAULT NULL,
  `valor` varchar(10) COLLATE latin1_general_ci DEFAULT NULL,
  `latitude` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `longitude` varchar(100) COLLATE latin1_general_ci DEFAULT NULL,
  `cep` varchar(15) COLLATE latin1_general_ci DEFAULT NULL,
  `cidade` varchar(50) COLLATE latin1_general_ci DEFAULT NULL,
  `estado` varchar(2) COLLATE latin1_general_ci DEFAULT NULL,
  `data_atualizacao` varchar(15) COLLATE latin1_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
<?php 
// CONECTA AO BANCO EXTERNO
$server = 'localhost';
$banco = 'teste';
$usuario_db = 'teste';
$senha_db = 'teste';

$conexao = mysql_connect($server,$usuario_db,$senha_db) or die(mysql_error());
mysql_select_db($banco,$conexao) or die(mysql_error());

$data_atualizacao = date("d/m/Y h:i:s");

//PEGA DADOS IMOVEIS INICIAL
//////////////////////////////////////////////////

//LIMPA BANCO
$query = "DELETE FROM imoveis" ; 
mysql_query($query,$conexao) or die (mysql_error());

$url = "http://www.sicadi.com.br/i_mostra_imoveis_xml.php?codigo_imobiliaria=0206";
$cURL = curl_init($url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
$resultado = curl_exec($cURL);
//echo utf8_encode($resultado);
curl_close($cURL);

//LIMPAR
$resultado = str_replace("<![CDATA[","",$resultado);
$resultado = str_replace("]]>","",$resultado);

//CORRIGE NOMES
$resultado = str_replace("RESID&ECIRC;NCIA","RESIDÊNCIA",$resultado);
/*$resultado = str_replace("GALP&ATILDE;O/BARRAC&ATILDE;O","GALPÃO/BARRACÃO",$resultado);
*/
$resultado = str_replace("Ã","Ã",$resultado);
$resultado = str_replace("Á","Á",$resultado);
$resultado = str_replace("á","á",$resultado);
$resultado = str_replace("Ê","Ê",$resultado);
$resultado = str_replace("Â","Â",$resultado);
$resultado = str_replace("Ç","Ç",$resultado);
$resultado = str_replace("Ó","Ó",$resultado);
$resultado = str_replace("Í","Í",$resultado);
$resultado = str_replace("º","°",$resultado);
$resultado = str_replace("&IACUTE;", "Í",$resultado);
$resultado = str_replace("&AACUTE;", "Á",$resultado);
$resultado = str_replace("&ATILDE;", "Ã",$resultado);


//PEGAR O INICIO DO IMOVEL
$inicio = strpos($resultado,"<imovel id");
$fim = strpos($resultado,"</imoveis>");

//PEGAR APENAS O QUE QUERO
$resultado = substr($resultado, $inicio, $fim); 
$im = explode('</imovel>', $resultado);

//QUANTIDADE
$qt = count($im);

//COLOCA EM BANCO

for($i =0; $i < $qt - 1; $i++){

//PEGA IMOVEIS
$imovel = $im[$i];
$imovel = str_replace("</"," ",$imovel);
$imovel = str_replace("<"," ",$imovel);
$imovel = str_replace(">"," ",$imovel);
$imovel = str_replace("codigo","id codigo",$imovel);
$imovel = str_replace('"  
     tipo','"codigo tipo',$imovel);
$imovel = str_replace('/ 
     disponibilidade',"fotos_disponiveis count disponibilidade",$imovel);	
$imovel = str_replace('valor="', 'finalidade  valor="',$imovel);
$imovel = str_replace('"fotos_disponiveis', ' valor',$imovel);

    
$id = explode('id', $imovel);
$id = str_replace('="',"",$id);
$id = str_replace('"',"",$id);
$id = utf8_decode(trim($id[1]));

$codigo = explode('codigo', $imovel);
$codigo = str_replace('="',"",$codigo);
$codigo = str_replace('"',"",$codigo);
$codigo = utf8_decode(trim($codigo[1]));

$tipo = explode('tipo', $imovel);
$tipo = str_replace('="',"",$tipo);
$tipo = str_replace('"',"",$tipo);
$tipo = utf8_decode(trim($tipo[1]));

$link = explode('link', $imovel);
$link = str_replace('="',"",$link);
$link = str_replace('"',"",$link);
$link = trim($link[1]);

$endereco = explode('endereco', $imovel);
$endereco = str_replace('="',"",$endereco);
$endereco = str_replace('"',"",$endereco);
$endereco = utf8_decode(trim($endereco[1]));

$bairro = explode('bairro', $imovel);
$bairro = str_replace('="',"",$bairro);
$bairro = str_replace('"',"",$bairro);
$bairro = utf8_decode(trim($bairro[1]));

$fotos = explode('fotos_disponiveis count', $imovel);
$fotos = trim($fotos[1]);
$fotos = str_replace('="',"",$fotos);
$fotos = str_replace('"',"",$fotos);
$fotos = str_replace('/',"",$fotos);
$fotos = substr($fotos, 0, 3); 

echo $fotos.'<br>';

$finalidade = explode('finalidade', $imovel);
$finalidade = str_replace('="',"",$finalidade);
$finalidade = str_replace('"',"",$finalidade);
$finalidade = trim($finalidade[1]);

$valor = explode('valor', $imovel);
$valor = str_replace('="',"",$valor);
$valor = str_replace('"',"",$valor);
$valor = str_replace('/',"",$valor);
$valor = trim($valor[1]);

$quartos = explode('quartos', $imovel);
$quartos = str_replace('="',"",$quartos);
$quartos = str_replace('"',"",$quartos);
$quartos = trim($quartos[1]);

$suites = explode('suites', $imovel);
$suites = str_replace('="',"",$suites);
$suites = str_replace('"',"",$suites);
$suites = trim($suites[1]);

$banheiros = explode('banheiros', $imovel);
$banheiros = str_replace('="',"",$banheiros);
$banheiros = str_replace('"',"",$banheiros);
$banheiros = trim($banheiros[1]);

$garagens = explode('garagens', $imovel);
$garagens = str_replace('="',"",$garagens);
$garagens = str_replace('"',"",$garagens);
$garagens = trim($garagens[1]);

$query = "INSERT INTO imoveis (id, codigo, tipo, link, endereco, bairro, fotos, finalidade, valor, quartos, suites, banheiros, garagens, data_atualizacao) VALUES ('$id', '$codigo', '$tipo', '$link', '$endereco', '$bairro', '$fotos', '$finalidade', '$valor', '$quartos', '$suites', '$banheiros', '$garagens', '$data_atualizacao')" ; 
mysql_query($query,$conexao) or die (mysql_error());
} 

//ATUALIZA IMOVEIS E INSERE FOTOS
//////////////////////////////////////////////////

//LIMPA BANCO
$query = "DELETE FROM fotos" ; 
mysql_query($query,$conexao) or die (mysql_error());

// LOOP EM TODOS OS IMOVEIS
$query = "SELECT * FROM imoveis";
$result = mysql_query($query,$conexao) or die(mysql_error());
while ($linha = mysql_fetch_array($result)) {
$link = $linha[link];
$url = "http://www.sicadi.com.br/".$link;

$cURL = curl_init($url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
$resultado = curl_exec($cURL);
//echo utf8_encode($resultado);
curl_close($cURL);

//LIMPAR
$resultado = str_replace('<?xml version="1.0" encoding="ISO-8859-1"?>',"",$resultado);
$resultado = str_replace("<![CDATA[","",$resultado);
$resultado = str_replace("]]>","",$resultado);

//PEGAR O ID IMOVEL
$inicio = strpos($resultado,'<imovel id="');
$fim = strpos($resultado,'codigo=');
$id_imovel = substr($resultado, $inicio, $fim);
$id_imovel = str_replace('<imovel id="','',$id_imovel);
$id_imovel = str_replace('" c','',$id_imovel);

//PEGAR FOTOS
$resultado = str_replace('" ></foto>','src="',$resultado);
$fotos_internas = explode('src="', $resultado);
$total_fotos = count($fotos_internas) - 1;

//INSERE FOTOS
for($r=1;$r<=$total_fotos;$r +=2){
	$ft = "INSERT INTO fotos (id_imovel, foto, data_atualizacao) VALUES ('$id_imovel', '$fotos_internas[$r]', '$data_atualizacao')" ; 
	mysql_query($ft,$conexao) or die (mysql_error());
}

//PEGA CIDADE
$inicio = strpos($resultado,'<cidade>');
$fim = strpos($resultado,'<estado>');
$cidade = substr($resultado, $inicio, $fim - $inicio);
$cidade = str_replace('<cidade>','',$cidade);
$cidade = str_replace('</cidade>','',$cidade);
$cidade = trim($cidade);

//PEGA ESTADO
$inicio = strpos($resultado,'<estado>');
$fim = strpos($resultado,'<cep>');
$estado = substr($resultado, $inicio, $fim - $inicio);
$estado = str_replace('<estado>','',$estado);
$estado = str_replace('</estado>','',$estado);
$estado = trim($estado);

//PEGA CEP
$inicio = strpos($resultado,'<cep>');
$fim = strpos($resultado,'<condominio>');
$cep = substr($resultado, $inicio, $fim - $inicio);
$cep = str_replace('<cep>','',$cep);
$cep = str_replace('</cep>','',$cep);
$cep = str_replace('-','',$cep);
$cep = trim($cep);

//PEGA DESCRICAO
$inicio = strpos($resultado,'<caracteristicas>');
$fim = strpos($resultado,'<area_total');
$descricao = substr($resultado, $inicio, $fim - $inicio);
$descricao = str_replace('<caracteristicas>','',$descricao);
$descricao = str_replace('</caracteristicas>','',$descricao);
$descricao = str_replace("'","''",$descricao);
$descricao = trim($descricao);


//PEGA COORDENADA
$url = "http://maps.google.com/maps/api/geocode/json?address=$cep,$cidade,$estado&sensor=false";
$cURL = curl_init($url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
$resultado = curl_exec($cURL);
//echo utf8_encode($resultado);
curl_close($cURL);

$inicio = strpos($resultado,'"location"');
$fim = strpos($resultado,'"location_type"');
$localizacao = substr($resultado, $inicio, $fim - $inicio);
$localizacao = explode(',', $localizacao);
$latitude = trim($localizacao[0]);
$latitude = str_replace("\n", "", $latitude);
$latitude = str_replace(" ", "", $latitude);
$latitude = str_replace('"location":{"lat":', "", $latitude);

$longitude = trim($localizacao[1]);
$longitude = str_replace("\n", "", $longitude);
$longitude = str_replace(" ", "", $longitude);
$longitude = str_replace('"lng":', '', $longitude);
$longitude = str_replace('}', '', $longitude);

//ATUALIZA DADOS IMOVEIS
$sql = "UPDATE imoveis set longitude = '$longitude', latitude = '$latitude', cep = '$cep', cidade = '$cidade', estado = '$estado', descricao = '$descricao' where id = '$id_imovel'" ; 
//echo $sql;
mysql_query($sql,$conexao) or die (mysql_error());

}
?>

 

Postado

Olá, 

 

estranho, Data truncated pelo que sei está informando que você está tentando colocar uma informação acima da capacidade limite especificada da coluna.

 

você conseguiria realizar o insert um por vez manualmente? assim você irá descobrir qual está com o problema

 

abs. 

Postado
1 hora atrás, Sayd L disse:

`codigo` int(11) DEFAULT NULL,

@Sayd LO tipo inteiro no tem uma capacidade maxima de 10 digitos , no maximo o valor 2147483647 contando com os valores negativos e sem valores negativos até 4294967295.

O campo código tem 11 digitos que no caso não cabem em um campo do tipo int , em caso do codigo como não vai utilizar ele para càlculos matemáticos pode substituir por char(11) ou varchar(11)

Postado
4 horas atrás, Fn1X disse:

Olá, 

 

estranho, Data truncated pelo que sei está informando que você está tentando colocar uma informação acima da capacidade limite especificada da coluna.

 

você conseguiria realizar o insert um por vez manualmente? assim você irá descobrir qual está com o problema

 

abs. 

Opa. Por insert eu consigo inserir um por vez, porém é em torno de 350+ registros para inserção. 


Obrigado pela resposta.

 

4 horas atrás, luscas disse:

@Sayd LO tipo inteiro no tem uma capacidade maxima de 10 digitos , no maximo o valor 2147483647 contando com os valores negativos e sem valores negativos até 4294967295.

O campo código tem 11 digitos que no caso não cabem em um campo do tipo int , em caso do codigo como não vai utilizar ele para càlculos matemáticos pode substituir por char(11) ou varchar(11)

Hum. Eu alterei aqui como informado e apresentou outro error: Data too long for column 'codigo' at row 1

 

Obrigado pela resposta.

Postado
20 minutos atrás, Fn1X disse:

Utilize bigint no lugar de int

 

Funcionou perfeitamente! Obrigado. :thumbsup:

 

Estranho essa mudança, antes de fazer a minha migração de máquina funcionava normalmente e não apresentava logs de erros.

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!