Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error al introducir caracteres extraños en MySQL

Estas en el tema de Error al introducir caracteres extraños en MySQL en el foro de Mysql en Foros del Web. Hola a todos, tengo un problemilla a la hora de insertar datos en mi BBDD mediante un SCRIPT, ya que en dicho SCRIPT tengo acentos, ...
  #1 (permalink)  
Antiguo 27/11/2012, 07:17
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Error al introducir caracteres extraños en MySQL

Hola a todos, tengo un problemilla a la hora de insertar datos en mi BBDD mediante un SCRIPT, ya que en dicho SCRIPT tengo acentos, ¿, ?, !, ', etc. Y cuando he ejecutado el SCRIPT y visualizo los datos se ven caracteres extraños.
Alguien puede decirme a que se debe?
Les dejo parte del SCRIPT por si pueden ver algun arror o algo que falte:
Código:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `myDataBase` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `myDataBase`;

DROP TABLE IF EXISTS `myDataBase`.`myTable`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `myDataBase`.`myTable` (
`field1` int(10) unsigned NOT NULL auto_increment,
`field2` INT(10) NOT NULL,
`field3` DATETIME,
`field4` VARCHAR(50),
`field5` INT(10) NOT NULL,
`field6` VARCHAR(100),
`field7` INT(10) NOT NULL,
`field8` VARCHAR(100) NOT NULL,
`field9` INT(10),
`field10` LONGTEXT,
`field11` LONGTEXT,
PRIMARY KEY (`field11`)
)
ENGINE = InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

LOCK TABLES `myTable` WRITE;
/*!40000 ALTER TABLE `myTable` DISABLE KEYS */;
INSERT INTO `myDataBase`.`myTable` (field2, field3, field4, field5, field6, field7, field8, field9, field11) VALUES (0, '2012-11-16 12:57:10', 'Hello', 584, 'Encuesta 1', 0, '¿Le gustaría nuestro producto ?', 1, 'Muchísimo', 'Muchísimo');
/*!40000 ALTER TABLE `myTable` ENABLE KEYS */;
UNLOCK TABLES;
Alguna idea?
Muchas gracias
  #2 (permalink)  
Antiguo 27/11/2012, 07:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al introducir caracteres extraños en MySQL

Es un problema eterno...
Lo más probable es que el script en cuestión haya sido mal grabado como .SQL, y que el CHARSET del archivo no sea UTF8.
Eso sucede si alguien abre con un editor de texto un backup generado como el que tienes, y lo vuelve a grabar sin percatarse que el texto plano del script se está grabando como ANSI o Unicode, ninguno de los cuales es bien interpretado por MySQL, que espera únicamente UTF8.
Verifica el charset del archivo, y si usas una interfaz para enviarlo al MySQL, asegurate de que lo esté enviando como UTF8.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 27/11/2012, 09:14
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Error al introducir caracteres extraños en MySQL

Hola gnzsoloyo, gracias por la respuesta rápida.
Por lo que he podido ver es que cuando en C# creo el SCRIPT le indico que sea en formato UTF-8, pero cuando me descargo el fichero y lo abro con Notepad++, veo que en la codificación pone ANSI, hay alguna forma de forzar UTF8?
Para insertarlo en BBDD lo que hago es abrirlo en MuSQL Administrator y ejecutarlo.

Alguna idea?
Gracias
  #4 (permalink)  
Antiguo 27/11/2012, 09:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al introducir caracteres extraños en MySQL

Si el error se produce en la la programación durante la generación del archivo, tienes que verificar esa parte.
Por alguna razón está fallando ese ciclo.

Forzarlo no garantiza la recuperación, porque peude que el archivo ya esté corrupto al momento de arirlo.

¿Qué es lo que llamas desde el C#? ¿mysqldump.exe u otra herramienta intermedia?

Por otro lado, si usas mysqldump, no puedes usar el MySQL Administrator para cargarlo. En todo caso deberías usar el MySQL Query.
Y personalmente te aconsejo que descartes definitivamente ambas herramientas porque están obsoletas y discontinuadas (proyectos cancelados). Las reemplazaron con el MySQL Workbench.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/11/2012, 09:27
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Error al introducir caracteres extraños en MySQL

Hola, no uso ningún programa para generar el Script, lo genero yo manualmente.
  #6 (permalink)  
Antiguo 27/11/2012, 09:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error al introducir caracteres extraños en MySQL

¿Y no te parece más práctico y seguro hacer que se ejecute el mysqldump.exe para eso, especialmente desde el momento en que si tienes MySQL instalado, esa aplicación está también en el mismo directorio /bin?
Si lo piensas, te evita dos problemas: 1) inventar la rueda, y 2) problemas de compatibilidad de charset...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: caracteres, extraños
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.