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

Problema: Illegal mix of Collations

Estas en el tema de Problema: Illegal mix of Collations en el foro de Mysql en Foros del Web. Tengo el sgte problema: Cuando ejecuto este query: Código: select * from trevistas where titulo like "%oro%" or descripcion like "%oro%" or keywords like "%oro%" ...
  #1 (permalink)  
Antiguo 22/02/2006, 23:40
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Problema: Illegal mix of Collations

Tengo el sgte problema:
Cuando ejecuto este query:
Código:
select *
from trevistas 
where titulo like "%oro%"
or descripcion like "%oro%"
or keywords like "%oro%"
order by idrev
me aparece el sgte mensaje:
Código:
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
Localmente no funciona, pero en la web , si.
Alguna sugerencia, pq necesito probar los datos de manera local tambien.
Muchas gracias
LocalPHP: 4.3.9
MySQL: 4.1.7
PHPMyAdmin: 2.6.0-pl2
Apache Web Server : 1.3.33

Web
PHP: 4.4.1
MySQL: 4.0.25
PHPMyAdmin: 2.6.4-pl2
Apache Web Server : 1.3.34
__________________
:adios:
  #2 (permalink)  
Antiguo 23/02/2006, 07:27
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Por que no revisas tus collations y character_set de tu base de datos, de tu conexion y de tus tablas, parece que estas mezclando utf8 con latin1, por que no revisas eso;
Código PHP:
<>
mysql>SHOW VARIABLES LIKE '%character_set%';
mysql>SHOW CREATE TABLE trevistas;
mysql>SHOW CREATE DATABASE nombreBase
revisa si estas usando los mismos character sets en tu tabla, tu base de datos y la conexion, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 23/02/2006, 13:23
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Como reviso esa informacion?
Utilizo el AppServ 2.4.2
__________________
:adios:
  #4 (permalink)  
Antiguo 23/02/2006, 13:30
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Si no me equivoco el appserv viene con phpmyadmin, puedes ejecutar esas consultas(porque tambien son consultas) en tu phpmyadmin, ahora si no lo haces por consola y agarras ctrl+C, ctrl+V y vemos como esta, cya
Código PHP:
//
SHOW VARIABLES LIKE '%character_set%';
SHOW CREATE TABLE trevistas;
SHOW CREATE DATABASE nombreBase
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 23/02/2006, 14:09
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Esto es lo que aparece:
MySQL 4.1.7-nt ejecutándose en localhost como ODBC@localhost
Juego de caracteres y sus cotejamientos (collations)

latin1
latin1_swedish_ci Sueco, independiente de mayúsculas y minúsculas
utf8
utf8_general_ci Unicode (multilingüe), independiente de mayúsculas y minúsculas

dentro de otro grupo de caracteres, pero estos son los que presentan problemas.
__________________
:adios:
  #6 (permalink)  
Antiguo 23/02/2006, 14:25
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Mira que comando es ese que ejecutaste o de donde anotaste eso, la consulta deberia generarte algo asi:
Código PHP:
<>
mysqlSHOW VARIABLES LIKE '%character_set%';
+--------------------------+----------------------------+
Variable_name            Value                      |
+--------------------------+----------------------------+
character_set_client     utf8                       |
character_set_connection utf8                       |
character_set_database   utf8                       |
character_set_results    utf8                       |
character_set_server     latin1                     |
character_set_system     utf8                       |
character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysqlshow create database sib;
+----------+---------------------------------------------------------------------------------------+
Database Create Database                                                                       |
+----------+---------------------------------------------------------------------------------------+
sib      CREATE DATABASE `sib/*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish2_ci */ |
+----------+---------------------------------------------------------------------------------------+ 
deberian generarte respuesta de ese tipo, pero lo que me muestras no tengo idea de que exactamente es, puedes ser un poco mas explicito, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #7 (permalink)  
Antiguo 23/02/2006, 14:34
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Variables y parámetros del servidor:
Variable Valor de la sesión Valor global
character set client utf8 latin1
character set connection utf8 latin1
character set database latin1 latin1
character set results utf8 latin1
character set server latin1 latin1
character set system utf8 utf8
collation connection utf8_general_ci latin1_swedish_ci
collation database latin1_swedish_ci latin1_swedish_ci
collation server latin1_swedish_ci latin1_swedish_ci
__________________
:adios:
  #8 (permalink)  
Antiguo 23/02/2006, 14:38
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
entonces el problema viene del tipo de collation que elegi al crear la base de datos en mi localserver, verdad???
Deberia volver a crear la base de datos o cambiarle el tipo ahi mismo?
cual es el que deberia escoger?

Agradezco mucho tu ayuda.
__________________
:adios:
  #9 (permalink)  
Antiguo 23/02/2006, 14:58
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
No es tanto el collation en realidad puedes mezclar los collations (por lo menos hasta donde probe), la idea es que no puedes mezclar dos collations de distintos character sets, ahora creo que puedes arreglarlo con un alter database y si tambien tus tablas estan asi con un alter table:
Código PHP:
<>
ALTER DATABASE baseDatos DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_spanish2_ci;

ALTER TABLE nombreTabla DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_spanish2_ci
cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #10 (permalink)  
Antiguo 23/02/2006, 15:12
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
pues nada, sigue apareciendo el mismo mensaje
y ya le hice la modificacion a las tablas y a la db
__________________
:adios:
  #11 (permalink)  
Antiguo 23/02/2006, 15:18
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Bueno, le hice las modificaciones a cada uno de los campos, ahora estan en utf8_spanish2_ci , y todo funciona muy bien.
Para la creacion de otras tablas y no tener estos problemas, debo modificar algun parametro para que me escoga ese tiepo de collation por default?
O siempre debo asegurarme antes de crear las tablas y los campos de modificar estos valores???

Muchas gracias!
__________________
:adios:
  #12 (permalink)  
Antiguo 23/02/2006, 15:27
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Una vez establecidos como default en tu base de datos no deberias tener problemas al crear otras tablas, pero bueno para estar seguro usas el SHOW CREATE TABLE, que ahi te muestra con que character set y collation se creo, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #13 (permalink)  
Antiguo 24/11/2006, 15:33
 
Fecha de Ingreso: noviembre-2006
Mensajes: 2
Antigüedad: 17 años, 5 meses
Puntos: 0
Cita:
Iniciado por deadlykyo Ver Mensaje
No es tanto el collation en realidad puedes mezclar los collations (por lo menos hasta donde probe), la idea es que no puedes mezclar dos collations de distintos character sets, ahora creo que puedes arreglarlo con un alter database y si tambien tus tablas estan asi con un alter table:
Código PHP:
<>
ALTER DATABASE baseDatos DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_spanish2_ci;

ALTER TABLE nombreTabla DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_spanish2_ci
cya
Amigo yo tengo un problema parecido resulta q hize un backup de una bd al restaurarla no me reconoce los caracteres como la ñ y las letras tildadas que creen q pueda ser:
Sera por esto porq esta en "latin1_swedish_ci"

Pero al hacer esto en mi bd:

ALTER DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci

me sale esto:
Warning: Cannot modify header information - headers already sent by (output started at /hsphere/shared/apache/htdocs/phpMyAdmin/libraries/header_meta_style.inc.php:27) in /hsphere/shared/apache/htdocs/phpMyAdmin/libraries/common.lib.php on line 1154

Q crean q sea
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 13:26.