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

Crear y Conectar a Database>Table>Campo usando utf8

Estas en el tema de Crear y Conectar a Database>Table>Campo usando utf8 en el foro de Mysql en Foros del Web. Estoy siguiendo una guía, en ella usando el asistente de PHPMyAdmin, en la guia ponen solo los campos en UTF8 (usando PDO en PHP) La ...
  #1 (permalink)  
Antiguo 17/04/2014, 20:16
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 2 meses
Puntos: 9
Crear y Conectar a Database>Table>Campo usando utf8

Estoy siguiendo una guía, en ella usando el asistente de PHPMyAdmin, en la guia ponen solo los campos en UTF8 (usando PDO en PHP)

La duda que tengo es como he de pasar una consulta SQL en PHPMyAdmin que se agregue correctamente

Si añado esta SQL no me funciona
Código MySQL:
Ver original
  1. USE mvc;
  2. CREATE TABLE post (
  3.     titulo VARCHAR(50),
  4.     cuerpo TEXT
  5. );
  6. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo1', 'Cuerpo1');
  7. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo2', 'Cuerpo2');

Si lo creo mediante el asistente de PHPMyAdmin si funciona y al exportarlo obtengo esto
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `posts` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `titulo` varchar(150) NOT NULL,
  4.   `cuerpo` text NOT NULL,
  5.   PRIMARY KEY (`id`)

Última edición por gnzsoloyo; 17/04/2014 a las 20:22
  #2 (permalink)  
Antiguo 17/04/2014, 20:24
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: Crear y Conectar a Database>Table>Campo usando utf8

Cita:
Si añado esta SQL no me funciona
¿No te funciona en qué sentido?

Por otro lado, el que no sea UTF8 no depende de si usas un script o no para hacerlo, sino de cómo estás declarando la base (con qué charset por default). Cosa que no haces, por lo que asume el charset de servidor, que en tu caso es Latin1.

Mira, si ejecuto tu primer script en el MySQL Workbench, obtengo como resultado esto:
Código MySQL:
Ver original
  1. CREATE TABLE `post` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `titulo` varchar(50) DEFAULT NULL,
  4.   `cuerpo` text,
  5.   PRIMARY KEY (`id`)
Lo mismo si lo hago por consola.
Ahora bien, si quiero especificar el charset, sería:
Código MySQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS mvc DEFAULT CHARSET UTF8;
  2. USE mvc;
  3. CREATE TABLE post (
  4.     titulo VARCHAR(50),
  5.     cuerpo TEXT
  6. );
  7. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo1', 'Cuerpo1');
  8. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo2', 'Cuerpo2');
Y de ese modo obtengo esto:
Código MySQL:
Ver original
  1. CREATE TABLE `post` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `titulo` varchar(50) DEFAULT NULL,
  4.   `cuerpo` text,
  5.   PRIMARY KEY (`id`)

¿Se ve la diferencia?
__________________
¿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; 17/04/2014 a las 20:32
  #3 (permalink)  
Antiguo 17/04/2014, 20:34
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Crear y Conectar a Database>Table>Campo usando utf8

he comprobado que si creo la base de datos mediante el asistente de PHPMyAdmin, y después creo la tabla poniendo los dos campos a UTF8 funciona

buscando el equivalente SQL para PHPMyAdmin he probado la siguiente variable
Código:
CREATE TABLE post (
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	titulo VARCHAR(50) CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci,
	cuerpo TEXT CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
);
Pero me devuelve
Cita:
Error
consulta SQL:



CREATE TABLE post (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(50) CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci,
cuerpo TEXT CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
);
MySQL ha dicho: Documentación

#1064 - 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 'CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci,
cuerpo TEXT CONVERT TO ' at line 3
  #4 (permalink)  
Antiguo 17/04/2014, 20:39
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Crear y Conectar a Database>Table>Campo usando utf8

Información adicional:

Ese error viene dado si escribo la consulta en PHPMyAdmin, pero si uso el asistende de PHPMyAdmin poniendo los campos (titulo y cuerpo) a UTF8 entonces funciona, no se si es lo mas correcto, pero quien impartió el curso del framework en el 2012 lo hizo asi
Cita:
Editado: Código de programación no permitido en foros de Bases de DAtos.
Leer las normas del foro, por favor.

Última edición por gnzsoloyo; 17/04/2014 a las 22:44
  #5 (permalink)  
Antiguo 17/04/2014, 22:56
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: Crear y Conectar a Database>Table>Campo usando utf8

Mira, a mi entender el problema básico es que no estás práctico en MySQL. No estás respetando la sintaxis de MySQL, por lo que te sugiero antes de seguir adelante que leas el manual de referencia.
CONVERT no es una cláusula de CREATE TABLE, por tanto no la puedes usar allí.
El uso de CONVERT no tiene NADA que ver con CREATE TABLE. Se usa para otra cosa.

Cita:
he comprobado que si creo la base de datos mediante el asistente de PHPMyAdmin, y después creo la tabla poniendo los dos campos a UTF8 funciona
Eso es totalmente irrelevante. En todo caso prueba que estás ejecutando mal el script de creación que te postee en mi mensaje anterior. O ni siquiera lo estás probando.
Tengamos claro una cosa: phpMyadmin, como te dije, no es la base de datos, es sólo una interfaz que permite acceder a MySQL de una forma amigable.
En ese contexto, cuando usas el "asistente" de phpMyadmin, por detrás de lo que ves es PHP el que crea las sentencias y las envía a ejecutar a MySQL. phpMyadmin no crea las tablas. Es MySQL quien las crea. No es lo mismo.
Ahora bien, si el script te falla, es porque lo estás corriendo mal, no porque esté mal escrito, como ya te dije al comprobarlo yo mismo en mi PC por dos medios diferentes.
Lo que sería bueno es que nos expliques claramente a qué te refieres al decir
Cita:
Si añado esta SQL no me funciona
porque a mi no me termina de quedar claro exactamente cuál es el problema.
¿No crea las tablas?
¿Las crea pero no tienen el formato o estructura que buscas?
¿Devuelve errores o warnings? ¿En qué contexto? ¿Ejecutadas desde dónde?

Sería importante en este punto que nos mostraras por medio de una captura de pantalla cómo estás intentando ejecutar ese script de MySQL (y sólo MySQL) en phpMyadmin.
¿Podrías postear eso?


Por otro lado, quiero que te quede claro un tema: En los foros de BBDD no tratamos temas de programación y no se postea código de programación. Sólo SQL y temas de BBDD.
Eso dicen expresamente las normas del foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 18/04/2014, 08:19
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Crear y Conectar a Database>Table>Campo usando utf8

He buscado este manual, supongo que es el que me comentas:
https://dev.mysql.com/doc/refman/5.0/es/

En la guía anterior he visto que parece que se puede usar CMD para trabajar sobre MySQL
https://dev.mysql.com/doc/refman/5.0/es/batch-mode.html

Creo que estoy mezclando un poco las cosas, por un lado tengo el MySQL y por otro lado tengo PDO

Esta consulta se agrega correctamente
Código:
CREATE DATABASE mvc;
USE mvc;
CREATE TABLE post (
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	titulo VARCHAR(150),
	cuerpo TEXT
);
INSERT INTO post (titulo, cuerpo) VALUES ('Titulo1', 'Cuerpo1');
INSERT INTO post (titulo, cuerpo) VALUES ('Titulo2', 'Cuerpo2');
La guía que sigo para crear un pequeño framework esta en español y dice que los campos Titulo y Cuerpo han de ser utf8_spanish_ci

Calculo que la consulta de PDO exige que dicha tabla cumpla unos criterios concretos antes de usarla

Segué investigando, gracias
  #7 (permalink)  
Antiguo 18/04/2014, 10: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: Crear y Conectar a Database>Table>Campo usando utf8

Me alegro que sigas investigando. Aunque me alegraría más que respondieses las preguntas.

Quiero aclarar un par de cosas:

1) Esto no es una consulta. Son seis (6) consultas diferentes en un script SQL, donde si quieres que las tablas sean por default UTF8, tienes que declarar el CHARSET de la base como tal:

Código MySQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS mvc DEFAULT CHARSET UTF8;
  2. USE mvc;
  3. CREATE TABLE post (
  4.     titulo VARCHAR(50),
  5.     cuerpo TEXT
  6. );
  7. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo1', 'Cuerpo1');
  8. INSERT INTO post (titulo, cuerpo) VALUES ('Titulo2', 'Cuerpo2');

2) Cuando pregunto cómo estás ejecutando eso en el phpMyadmin, lo que pregunto es si estás poniéndolo en esta parte:



y muy en especial si estás teniendo en cuenta el textbox inferior que dice "Delimiter".

Esto es muy importante como respuesta porque no hay ni una parte en todos tus posts que aclaren esa duda.

Además, lo que sea PDO es tema del Foro de PHP, allá te pueden orientar mejor, en especial porque luego de crear los objetos de PDO que se manejen con UTF(, el mismo PHP tiene recursos para definir el tipo de charset que usará la conexión, y eso es crítico.
Pero esos son temas a definir en PHP, no en MySQL.

Nota final: Si ese script SQL lo estás enviando entero y sin separar las queries independientes, como un solo bloque, desde PHP, eso es un error. Te conviene enviarlas de a una, o de lo contrario no sabrás jamás si alguna falla, y cuál.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, null, php, sql, usando
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 19:50.