Bom, eu havia convertido um DBF do DBase para uma tabela do MySQL. Como estava dando erro com o campo TEXT, criei campos BLOB.
O problema que eu esqueci que havia feito isso, o sistema estava operando normalmente.
Só apareceu o problema quando resolvi migrar o site para UTF-8, o site era Latin1 (ISO-8859-1)...
Todos os campos TEXT estavam corretos, mas os campos BLOB não...
Ao tentar converter com MODIFY o erro era algo do tipo:
ERROR 1366 (HY000): Incorrect string value: '\xC7\xC3O' for column 'HIST' at row 5O problema é que no campo BLOB estavam salvos os dados em Binário, e o MySQL não sabia o que fazer com os caracteres com acentos.
Solução usada
Rodei no PHP o seguinte código:
$mysqlA = new mysqli("localhost","user","Depois de executá-lo, rodei o seguinte código no MySQL:
senha","db");
$mysqlB = new mysqli("localhost","user","senha","db");
$sql = "SELECT * FROM table";
$queryA = $mysqlA->query($sql);
while ($line = $queryA->fetch_array(MYSQL_ASSOC))
{
$histnew = $mysqlB->real_escape_string(utf8_encode($line["HIST"]));
$ID = $line["TableID"];
$sql = "UPDATE table SET HIST = \"$histnew\" WHERE
TableID = $ID";
$mysqlB->query($sql);
}
ALTER TABLE tbllancamentos MODIFY HIST TINYTEXTE pronto, os acentos estavam corretos bastando apenas escolher o charset pelo MySQL no PHP...
Nenhum comentário:
Postar um comentário