MySql, Ordenando alfabeticamente...

Ejecuto una sentencia SQL que tiene Order By por un campo alfabético y el resultado no esta ordenado correctamente, tiene problemas de orden con la "Ñ", ¿cómo puedo hacer para indicarle el lenguaje y me pueda ordenar correctamente en español?

1 respuesta

Respuesta
1
Este es un problema del juego de caracteres.
Por defecto MySQL usa el juego de catacteres 'latin1', este juego de caracteres no tiene previsto exactamente el orden de la Ñ y en una consulta se confunde con la N.
Con el juego de caracteres 'latin2', se termina el problema incluso para los acentos.
Lo que tienes que hacer es agregar las siguientes lineas en la configuración (my.cnf o my.ini)
---------------------------------------
[mysqld]
default-character-set = latin2
---------------------------------------
Reiniciar el servidor y listo!
Advertencia
En todas las tablas tipo myisam con indices ya declarados debes ejecutar
myisamchk -r -q --set-character-set=latin2 nombre_tabla
Para acomodar los indices, en caso contrario seguirán igual.
¿Qué pasa si estoy usando tablas tipo Innodb, debo ejecutar algún comnando?
Porque todos los comandos siempre hacen referencia a tablas Myisam, lo mismo sucede para reconstruir tablas dañadas y como compactar archivos, no conseguí por ningún lado información de como hacerlo para Innodb.
Yo también uso tablas InndoDB. Para esto tienes que sacarle una copia de seguridad de toda la base que esta en InnoDB con mysqldump y luego restaurarla con el nuevo juego de caracteres.
Estimado Experto, ante todo muchas gracias por tu respuesta.
Estuve realizando unas pruebas con los indices y lo que hice fue lo siguiente: Utilizando DBTOOLS, edite algunos archivos con indices con campos alfabéticos y los borre, luego los cree de nuevo, y funcionaron perfecto. Solo borre y cree nuevamente los indices con campos alfabéticos, a los numéricos no les hice nada, pero ceo que de todas maneras no serian afectados y por lo tanto no hacia falta, ¿es correcto?, ¿Crees qué con esta solución es suficiente o tendría que realizar de todas maneras la copia y luego restaurar?
¿Por favor puedes indicarme como hago para reconstruir una tabla innodb en el caso que se dañe y como puedo compactar una base de datos igualmente innodb?. Tengo una aplicación lista pero no quiero instalar sin conocer estos detalles.
Saludos,
Estoy acostumbrado a realizar copias de seguridad todos los días... ademas que tengo que hacerlo...
Me parece excelente que funcione el método que descubriste.
Por otro lado hasta el momento no he tenido problemas con el modo innodb, pero si con el MyISAM...
InnoDB verifica que toda la data esta integra antes de arrancar, y si es que hay algún problema simplemente no arranca... pero como te dije, asta el momento todo anda bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas