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

show databases i show tables, create table y insert y los accentos

Estas en el tema de show databases i show tables, create table y insert y los accentos en el foro de Mysql en Foros del Web. desde phpmyadmin cargo un fichero basededatos.sql el fichero esta con formato utf-8 utilizo bluefish Código: create database à use à create table à( è varchar(9) ...
  #1 (permalink)  
Antiguo 27/10/2010, 02:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
show databases i show tables, create table y insert y los accentos

desde phpmyadmin cargo un fichero basededatos.sql
el fichero esta con formato utf-8 utilizo bluefish

Código:
create database à
use à

create table à(
è varchar(9) not null
í  varchar(9) not null
)ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;

insert into à (è,ì) values('ó','ú');
---------------------------------------
si hago show databases

tendria que salir à

sale error con las 3
use à , use a , use ?

--------------------------------------
si hago show tables

tendria que salir à
-----------------------------------------------------------------------------
tampoco puedo hacer ninguna select * from à; sale error
asi tampoco select * from `à`

como puedo solucionarlo


mysql> SHOW VARIABLES LIKE 'character_set_system';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_system | utf8 |
+----------------------+-------+
1 row in set (0.00 sec)

Código:
en php utilizo mysqli_query ($link,'SET NAMES "utf8" ');
en html   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
espero que cuando salga mysql 6 con falcon este problema no exista

Última edición por albertrc; 27/10/2010 a las 04:30
  #2 (permalink)  
Antiguo 27/10/2010, 06:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: show databases i show tables, create table y insert y los accentos

Creo que intentar poner caracteres raros, para el ingles, en los nombres de los objetos, es una mala práctica. O como mínimo es buscarse problemas inecesarios.

Apesar de esto te paso unos enlaces


10.3.6. Conjunto de caracteres y colación de la conexión


9.2. Nombres de bases de datos, tablas, índices, columnas y alias

yo no los usaria pero parece que no hay restricción para ello. Segun esto solo tendrias un problema de conjuntos de caracteres (capitulo 10)

Cita:
SET NAMES indica qué hay en el comando SQL que envía el cliente. Por lo tanto, SET NAMES 'cp1251' le dice al servidor “los próximos mensajes entrantes de este cliente están en el conjunto de caracteres cp1251.” También 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 .)
Estas seguro que estas mandando caracteres UTF8, el editor que estas usando para crear el script usa ese conjunto de carácteres...?

Es decir igual le estas diciendo "voy a mandar UTF8" y luego lemandas Latin1!!??

Quim

Última edición por quimfv; 27/10/2010 a las 06:16
  #3 (permalink)  
Antiguo 27/10/2010, 06:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: show databases i show tables, create table y insert y los accentos

si hago
create table poblacion (
a varchar(20)
);

insert into (a) poblacion values ('fórmula');


aunque este creando las tablas y filas sin accentos

si hago un insert con accentos me sale un interrogante
y los insert si que pueden tener accentos

select * from poblacion;
sale f?rmula y tendria que salir fórmula
ya se que formula no es ninguna poblacion pero es para hacer un ejemplo


`´ a,e,i,o,u,ñ nunca se podran utilizar con accentos otro caracteres
  #4 (permalink)  
Antiguo 27/10/2010, 07:07
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, 4 meses
Puntos: 2658
Respuesta: show databases i show tables, create table y insert y los accentos

El problema no está en la construcción de la tabla, o en la creación de la sentencia, sino en los charset usados en la conexión, en el lenguaje en los scripts, etc.
Para darte un ejemplo: Si en vb.net usas una conexión con CHARSET Latin1, pero tanto las tablas como las consultas generan una E/S en UTF-8, tendrás malos resultados en los caracteres acentuados. Pero por ejemplo, puedes revisar las tablas y que las letras acentuadas aparezcan correctamente.

Lo que debes analizar es el CHARSET de la base, de las tablas y de cada columna que estés usando. Además deberás revisar el charset de la conexión y cómo llega la base, especialmente si estás interactuando con páginas web.
Yo he tenido personalmente el inconveniente de que tanto la base como la conexión eran UTF-8, por lo que los datos se mostraban correctamente; pero a la hora de leer los datos, MySQL tomaba los valores como LATIN1 y entonces la respuesta generaba caracteres extraños.
La solución fue simplemente controlar el problema en la sentencia (conversion de charset por medio de función de MySQL), y la tabla resultado por medio de PHP (funciones de PHP).
Fue que los datos comenzaron a llegar bien.

En esencia eso es lo que sugieren. Lo que tienes que tener es paciencia para revisar todo paso a paso, y verificar en cada etapa que los resultados sean correctos.

Tip:
Si la base está en la Web, y tienes alguna interfase como phpMyadmin para acceder a ella, realiza algunas consultas manualmente con phpMyadmin para ver si los datos en las tablas están correctamente almacenados. Si no lo están, el problema está en el INSERT, en caso contrario el problema está cuando insertas los datos.
SI el problema está en el INSERT lo que debes revisar en cómo están los datos en el momento de crear el INSERT, eventualmente deberás usar unciones de PHP para asegurarte que los caracteres estén correctamente almacenados.
__________________
¿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 28/10/2010, 01:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: show databases i show tables, create table y insert y los accentos

estoy trabajando directamente con mysql sin cargar ningún fichero

Código:
mysql -u root -p
*********

create database comarca

use comarca
Código:
mysql> create table fórmula (
    -> codigo_fórmula SMALLINT(9) not null,
    -> nombre_fórmula VARCHAR(20) not null,
    -> habitantes_fórmula VARCHAR(20) not null,
    -> CONSTRAINT pk_codigo_fórmula PRIMARY KEY (codigo_fórmula)
    -> )ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '� (
codigo_fórmula SMALLINT(9) not null,
nombre_fórmula VARCHAR(20) not null,
hab' at line 1
Código:
mysql> SHOW VARIABLES LIKE 'character_set_system';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| character_set_system | utf8  |
+----------------------+-------+
1 row in set (0.00 sec)
no soporta los acentos, como puedo modificar la opción de mysql porque los soporte

tengo instalado fedora13 en español y el teclado también creo que el problema en si es mysql
he encontrado esta solución pero es un palo cada vez entrar --default-character-set=UTF8
hay alguna forma de modificar la configuración una vez y no se tenga que poner siempre esto

Código:
[albert@fedora13 ~]$ mysql -u root -p --default-character-set=UTF8
Enter password:

Última edición por albertrc; 28/10/2010 a las 02:40
  #6 (permalink)  
Antiguo 28/10/2010, 06:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: show databases i show tables, create table y insert y los accentos

Aquí debería estar todo... es el manual oficial

10.3. Determinar el conjunto de caracteres y la colación por defecto
(habla de recompilar el servidor!!! tu mismo.)


Pero perdona que insista, en serio necesitas una tabla que se llame fórmula y otra que se llame formula. La función de los nombres de los objetos es identificarlos luego la necesidad de usar dos nombres tan similares tendría difícil justificación, si encima te trae problemas de codificación...

En otras palabras solo se justificaría la necesidad de usar fórmula como nombre de una tabla o campo si el hecho de usar formula pudiera llevar a errores...

A mi también me j..de vivir en un entorno tan anglosajón pero a veces es mejor aceptarlo y no darse con una pared... por otro lado nadie te obliga que si el nombre de la tabla tiene que salir en una interfaz de usuario debas mostrar la etiqueta formula, puedes poner en la etiqueta fórmula y internamente usas formula.

Quim

Etiquetas: create, databases, insert, show, table, tables
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 02:11.