Está en la página 1de 5

CONJUNTO DE CARACTERES Y COLACION

NAVICAT

Tres

consolas cliente donde se presentan resultados de consultas.

Vamos a cambiar el CONJUNTO DE CARACTERES a la conexin de forma global, es decir, que afecte a las futuras conexiones: mysql> set global character_set_connection = utf8; y abrimos una nueva conexion cliente

ADMINISTRACION DE BASE DE DATOS

ING. J. ALBERTO NAVARRO PARDO

El servidor tiene varias variables de sistema que indican cmo est configurado. Todas ellas tienen valores por defecto, que pueden cambiarse al arrancar el servidor usando opciones en la lnea de comandos o en los archivos de opciones .ini. La mayora de ellos pueden cambiarse en tiempo de ejecucin usando el comando SET con privilegio de SUPER usuario(root). El servidor mysqld mantiene dos clases de variables. Las variables globales afectan las operaciones globales del servidor. Las variables de sesin afectan las siguientes conexiones individuales de clientes. Cuando el servidor arranca, inicializa todas las variables globales a sus valores por defecto. mysql> set global character_set_results = utf8; Abrimos un nuevo cliente:

Tambien aprecie la salida Web:

CAMBIAMOS la salida:

mysql> set global character_set_results=dec8;


ING. J. ALBERTO NAVARRO PARDO

ADMINISTRACION DE BASE DE DATOS

Modificaremos el nombre de CodEmp=T737 de Karin Nues. (NO olvidar reiniciar conexin) mysql> update empleado set nomemp='Karn' where codemp='T737'; Luego cambiamos la salida y consultamos:

mysql> set global character_set_results=ascii;

Cambiamos a mysql> set global character_set_client=utf8;

Probar con : mysql> select _utf8 x'7e';


ADMINISTRACION DE BASE DE DATOS

mysql> select _utf8 x'4e';


ING. J. ALBERTO NAVARRO PARDO

+---+ |~| +---+ |~| +---+ 1 row in set (0.00 sec) Qu conjunto de caracteres usa una consulta al salir del cliente? El servidor toma la variable character_set_client para usarla en las consultas enviadas por el cliente. Qu conjunto de caracteres debera usar el servidor para traducir una consulta tras recibirla? Para esto, el servidor usa character_set_connection y collation_connection. Esto convierte las consultas enviadas por el cliente de character_set_client a character_set_connection (excepto para cadenas de caracteres literales que tienen un introductor como _latin1 o _utf8). collation_connection es importante para comparaciones de cadenas de caracteres literales. Para comparaciones de cadenas de caracteres con valores de columnas no importa, ya que las columnas tienen una precedencia mayor en las colaciones. Qu conjunto de caracteres debera usar el servidor para traducir los resultados o errores antes de enviar el mensaje de vuelta al cliente? La variable character_set_results indica el conjunto de caracteres usado por el servidor para devolver los resultados de las consultas al cliente. Esto incluye datos resultantes como los valores de las columnas, y metadatos resultantes como nombres de columnas. Puede ajustar estas variables, o puede depender de los valores por defecto (en tal caso, puede obviar esta seccin). Hay dos comandos que afectan al conjunto de caracteres de conexin: SET NAMES 'nombre_de_conjunto_de_caracteres' SET CHARACTER SET nombre_de_conjunto_de_caracteres SET NAMES indica qu hay en el comando SQL que enva el cliente. Por lo tanto, SET NAMES 'cp1251' le dice al servidor los prximos mensajes entrantes de este cliente estn en el conjunto de caracteres cp1251. Tambin especifica el conjunto de caracteres para los resultados que el servidor devuelve al cliente. (Por ejemplo, indica los conjuntos de caracteres de la columna si usa el comando SELECT .) Un comando SET NAMES 'x' es equivalente a estos tres comandos: mysql> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET character_set_connection = x; Cambiar character_set_connection a x tambin cambia collation_connection de la colacin por defecto a x. SET CHARACTER SET es similar pero cambia el conjunto de caracteres y la colacin para la conexin para ser las de la base de datos por defecto. Un comando SET CHARACTER SET x es equivalente a estos tres comandos: mysql> SET character_set_client = x; mysql> SET character_set_results = x; mysql> SET collation_connection = @@collation_database; Cuando un cliente se conecta, enva al servidor el nombre del conjunto de caracteres que quiere usar. El servidor cambia las variables character_set_client, character_set_results, y character_set_connection para ese conjunto de caracteres. (De hecho, el servidor efecta una operacin SET NAMES usando el conjunto de caracteres). No es necesario ejecutar SET NAMES cada vez que se arranca el cliente mysql, aunque se quiera utilizar un conjunto de caracteres diferente del que hay por defecto. Puede aadirse la opcin --defaultcharacter-set en la lnea de comandos de mysql, o en el fichero de opciones. Por ejemplo, el siguiente fichero de opciones cambia las variables del conjunto de caracteres a koi8r cada vez que se ejecuta mysql: [mysql] default-character-set=koi8r

ADMINISTRACION DE BASE DE DATOS

ING. J. ALBERTO NAVARRO PARDO

character_set_connection

character_set_client

insert t values(3,Nuez)

Nuez

Select * from t;

c1 1

c2 Nuez

ADMINISTRACION DE BASE DE DATOS

ING. J. ALBERTO NAVARRO PARDO

También podría gustarte