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

[SOLUCIONADO] Incompatibilidad con caracteres en archivo SQL

Estas en el tema de Incompatibilidad con caracteres en archivo SQL en el foro de Mysql en Foros del Web. Hola. Tengo un problema a la hora de insertar registros en una tabla de una base de datos de MySQL. La base de datos la ...
  #1 (permalink)  
Antiguo 11/10/2014, 23:33
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Incompatibilidad con caracteres en archivo SQL

Hola.
Tengo un problema a la hora de insertar registros en una tabla de una base de datos de MySQL.
La base de datos la creé con compatibilidad utf8_general_ci. Sin embargo, al insertar los registros que contienen acentos, ¿ u otros caracteres propios de idioma español, al realizar la consulta estos caracteres figuran mal.
Es extraño, porque al crear registros desde Microsoft Visual .NET 2010, estos caracteres se guardan correctamente, sin problemas.

El código fuente del archivo es el siguiente:
Código SQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS `DB_COMISIONCOOP` CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. /*--- USO DE LA BASE DE DATOS ---*/
  3. USE `DB_COMISIONCOOP`;
  4.  
  5. /*--- CREACIÓN DE TABLAS ---*/
  6. /* TABLA PARACARGOS */
  7. CREATE TABLE IF NOT EXISTS DB_COMISIONCOOP.TB_Cargos (
  8.     idCargo INT(4) AUTO_INCREMENT NOT NULL PRIMARY KEY,
  9.     nomCargo VARCHAR(25) NOT NULL,
  10.     tipoCargo VARCHAR(10) NOT NULL DEFAULT 'Único'
  11. ) ENGINE = InnoDB;
  12.  
  13. /* CARGAR CARGOS POR DEFECTO */
  14. INSERT INTO DB_COMISIONCOOP.TB_Cargos (nomCargo, tipoCargo) VALUES
  15.     ('(Ninguno)','Repitente'),
  16.     ('Presidente','Único'),
  17.     ('Vicepresidente','Único');
En este caso, la Ú se registra como un caracter extraño.

¿Qué debo hacer para solucionar este inconveniente?
Espero su ayuda. Muchas gracias.

Un saludo.
__________________
Sergio Daniel Maidana
  #2 (permalink)  
Antiguo 12/10/2014, 03:57
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

¿De que forma verificar lo que se insertó?
Consola, o desde programación?
__________________
¿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 12/10/2014, 10:26
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

Bueno. Mira, importo el archivo SQL con ese código desde la consola a través de la función SOURCE. Pero si veo estos mismos datos desde Visual Studio .NET 2010, se ven de mismo modo (mal).
Los registros NO se insertan mal cuando lo hago desde la consola en forma manual o desde Visual Studio .NET 2010.

Me olvidé de incluír estas líneas en el código, que las tengo primero que todo:
Código SQL:
Ver original
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

No sé si me expliqué bien.
Gracias.
__________________
Sergio Daniel Maidana
  #4 (permalink)  
Antiguo 12/10/2014, 13:02
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

OK.
mira, si insertando desde consola, se insertan bien, no hay problemas ni con las tablas ni con la base. Lo que si puede haber es un problema con la fuente de datos, es decir el script que usas con el SOURCE...
Has verificado que el CHARSET propio en que el archivo esta grabado sea UTF8?
EsEsto es especialmente importante si se lo edita o si se lo abre y guarda de nuevo. Cualquier tipo de proceso que se haga con el podría corromper el charset que MySQL espera recibir.
__________________
¿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 12/10/2014, 14:59
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

Mucho no entendí la última parte. El CHARSET del archivo, ¿En qué parte se encuentra? ¿Cómo lo veo? Disculpa, pero no entendí que hacer.
__________________
Sergio Daniel Maidana
  #6 (permalink)  
Antiguo 12/10/2014, 17:23
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

El charset es la forma de codificar los caracteres, que tiene impacto en todo modo de transmitir y almacenar datos, sean estos conexiones, scripts, archivos, bases de datos, y todo sistema de transferencia.
En el caso de MySQL, la codificación de datos entrantes y salientes del servidor son por default UTF8 (ver link), mientras que el Notepad, como ya te dije, los codifica en ANSI o UNICODE, de alli que abrir un backup de MySQL, que se genera en UTF8, y guardarlo luego manualmente sin precauciones genere errores.
Para evitar errores hay que tener cuidado que al seleccionar "Guardar como...", el combo del charset de codificación diga "UTF8"

Verifica el charset del script que estás cargando, y el de la conexión que usas desde .Net.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/10/2014 a las 17:40
  #7 (permalink)  
Antiguo 12/10/2014, 18:17
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

COmprendo...

Pero ¿cómo puedo modificar el CHARSET del archivo Sql? Estoy usando Sublime Text. Sin embargo, intenté poner "Save As...", pero no me aparece para cambiar el charset, solamente el nombre del archivo y el tipo de archivo.
__________________
Sergio Daniel Maidana
  #8 (permalink)  
Antiguo 12/10/2014, 18:41
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

Primero, si el archivo ya se corrompió, no alcanza con simplemente grabar de nuevo. Deberás recuperar el script original para verificarlo. Pero sin ver el archivo en sí no te puedo dar más ideas.

Segundo, no uso herramientas de nivel experimental para desarrollos (sin ofender), por lo que no conozco ni tengo intenciones de instalar y usar el Sublime Text. Prefiero acudir al MySQL Workbench cuando es SQL, o NetBeans si es PHP, por ejemplo.
Tendrás que acudir a la documentación oficial de esa aplicación para verificar ese punto (http://docs.sublimetext.info/en/latest/index.html).

Finalmente, si quieres trabajar sobre seguro te recomiendo usar herramientas de desarrollo ya probadas. De hecho, Visual Studio puede editar los scripts de SQL y controlar correctamente el charset adecuado. No veo la necesidad que tienes de usar Sublime Text para tareas de ese tipo.

Yendo al punto realmente relevante: El script de backup original, ¿lo tienes todavía? ¿De dónde lo obtuviste? ¿Es un backup de alguna base a la que todavía puedes acceder?
En este ultimo caso lo más simple es volver a generarlo... Te llevaría poco tiempo y tendrías lo necesario sin mayores vueltas.
A partir de eso podríamos asegurarnos que el problema está en el script o bien en alguna otra configuración, no tan evidente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 13/10/2014, 17:03
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

El archivo original Sql es este que te comento. Lo creé yo mismo con el Sublime Text. Si quieres te lo puedo subir a MEGA y pasarte el Link para que lo veas.

Con respecto a MySQL WorkBench lo he probado un poco. Incluso, he pasado todas las tablas, relaciones y vistas a un Modal de la aplicación.
Ahora bien, no pude encontrar la forma de incluír algún proceso para que me Inserte ciertos registros en algunas tablas. Tampoco sé como hacer para que me genere un archivo SQL que me sirva.
__________________
Sergio Daniel Maidana
  #10 (permalink)  
Antiguo 17/10/2014, 21:58
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

Estimado: Como se menciona en la PDU 2.7, postear sólo para hacer que el thread se suba en la escala no se permite, y se borran sin previo aviso ni aclaración.
Si tienes información nueva para agregar, o explicarnos los intentos posteriores de solución, o agregar algo relevante al caso, no hay problema.

Por lo demás yo ya te di mi opinión y acercamiento al problema por el lado del charset de archivo, a partir de eso tu mismo deberías haber podido investigar un poco el tema y cómo afecta la generación de scripts cuando se usan caracteres extendidos.
Desde el vamos, no debes usar editores que no sean absolutamente seguros para crear scripts de SQL, habida cuenta de las restricciones que imponen los DBMS al uso de los charset y collation. El que usas para codificar programación, obviamente no sirve.

Lo primero que deberías hacer, entonces, en Workbench es volver a abrir el script generado por ti, y verificar si los caracteres se visualizan correctamente.

¿Lo hiciste?

No lo sé, porque no nos dices nada al respecto...

En segundo lugar, siendo que el Workbench abre un script no sólo para edición, sino para ejecución, yo habría supuesto que intentaste hacerlo correr desde el mismo Workbench, con lo cual, si los caracteres estuviesen bien al visualziarlo allí, tendríamos una cierta certeza que el problema no está en esa etapa.

¿Lo hiciste?

No lo sé, porque no nos dices haber hecho absolutamente nada en el Workbench...

Luego, si todo corrió bien, yo supondría que hubieras hecho un simple SELECT a la tabla respectiva, para ver si en el resultado desde el Workbench se muestran correctamente los caracteres.

¿Lo hiciste?

No lo sé, porque tampoco dices ni sugieres nada que me lleve a pensar que lo puedas haber hecho...

En definitiva: Luego de instalar el Workbech, ¿hiciste alguna prueba? Si la hiciste, dinos qué, y qué resultados obtuviste. Sólo así podremos avanzar en la solución a tu problema.
Lo que hayas hecho, acompañalo con capturas de pantalla que nos permitan verlo mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 18/10/2014, 10:52
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

Hola.
Por favor, necesito una respuesta. O espero que me puedas ayudar a generar este archivo con MySQL WorkBench.
__________________
Sergio Daniel Maidana
  #12 (permalink)  
Antiguo 18/10/2014, 11:00
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, 3 meses
Puntos: 2658
Respuesta: Incompatibilidad con caracteres en archivo SQL

Perdón, pero ¿leíste algo de lo que escribí?
Te puse tres cosas que debías hacer...
¿Intentaste alguna?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 19/10/2014, 02:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Incompatibilidad con caracteres en archivo SQL

sergiomaidana,
aunque yo tampoco uso Sublime text, lo he instalado y observado que si pulsas en File > Save with Encoding > UTF8 puedes guardar el archivo SQL en ese formato antes de importarlo. Prueba y nos dices.
  #14 (permalink)  
Antiguo 19/10/2014, 19:04
Avatar de sergiomaidana1989  
Fecha de Ingreso: abril-2013
Ubicación: Vera, Santa Fe
Mensajes: 70
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Incompatibilidad con caracteres en archivo SQL

Hola.
En primer lugar, no sabía que eso que hacía estaba prohibido, ni siquiera sé a que te refieres con "thread". En fin, disculpas por eso. Solo quería obtener alguna respuesta a mi duda.
En segundo término, no volví a tocar el archivo que creé desde Sublime Text. Tomé el consejo de pasar toda la información a MySQL WorkBench. Diseñé el modelado de la base de datos e hice las pruebas importando este modelo a mi servidor MySQL.
Investigando un poco encontré la forma de Insertar registros posterior a la creación desde el archivo SQL que creé con MySQL WorkBench.

En fin, ahora todo resulta perfecto. Me sirvió mucho el consejo acerca del uso de MySQL WorkBench. Me servirá mucho paa proyectos futuros. Agradezco el comentario aquel.

Comparto cómo me quedó mi archivo de SQL generado por MySQL WorkBench:
https://mega.co.nz/#!6NU0wYBS!7UC3Il...1mj22uRAvku11E

Gracias por todo.
__________________
Sergio Daniel Maidana

Etiquetas: caracteres, incompatibilidad, registro, sql, tabla
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 05:28.