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

[SOLUCIONADO] Cambiar columna varchar(45) a TINYTEXT

Estas en el tema de Cambiar columna varchar(45) a TINYTEXT en el foro de Mysql en Foros del Web. Tengo la siguiente tabla (este es el show create table) @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE `articles` (   `idarticles` INT ( 11 ...
  #1 (permalink)  
Antiguo 21/07/2015, 05:15
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 4 meses
Puntos: 84
Cambiar columna varchar(45) a TINYTEXT

Tengo la siguiente tabla (este es el show create table)

Código SQL:
Ver original
  1. CREATE TABLE `articles` (
  2.  `idarticles` INT(11) NOT NULL AUTO_INCREMENT,
  3.  `title` VARCHAR(45) NOT NULL,
  4.  `article` text NOT NULL,
  5.  `summary` tinytext,
  6.  `tags` tinytext,
  7.  `idusers` INT(11) DEFAULT NULL,
  8.  `idcategories` INT(11) DEFAULT NULL,
  9.  `datetime` datetime NOT NULL,
  10.  `idcollections` INT(11) DEFAULT NULL,
  11.  PRIMARY KEY (`idarticles`),
  12.  KEY `title` (`title`),
  13.  KEY `idusers_idx` (`idusers`),
  14.  KEY `idcategories_idx` (`idcategories`),
  15.  KEY `datetime` (`datetime`),
  16.  KEY `idcollections_idx` (`idcollections`),
  17.  CONSTRAINT `idcategories` FOREIGN KEY (`idcategories`) REFERENCES `categories` (`idcategories`) ON DELETE CASCADE ON UPDATE CASCADE,
  18.  CONSTRAINT `idcollections` FOREIGN KEY (`idcollections`) REFERENCES `collections` (`idcollections`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  19.  CONSTRAINT `idusers` FOREIGN KEY (`idusers`) REFERENCES `users` (`idusers`) ON DELETE CASCADE ON UPDATE CASCADE
  20. ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8

Esto lo creó MySQL Workbench.

Con el mismo MySQL Workbench, he querido cambiar el varchar(45) de la columna title, ya que se me queda corto con 45 caracteres, y lo quiero poner en TINYTEXT, ya que es el siguiente en longitud más grande.

Al aplicarlo en el diagrama ERR no me dió ningún error, pero al actualizarlo en la BD sí me dio un error, es el siguiente

Cita:
Executing SQL script in server
ERROR: Error 1170: BLOB/TEXT column 'title' used in key specification without a key length
SQL Code:
ALTER TABLE `bitplace`.`articles`
CHANGE COLUMN `title` `title` TINYTEXT NOT NULL COMMENT ''

SQL script execution finished: statements: 3 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch
No entiendo por qué ese error, ¿alguien puede ayudarme?

Saludos :D
__________________
Ayúdame a hacerlo por mi mismo.

Última edición por guardarmicorreo; 21/07/2015 a las 05:25
  #2 (permalink)  
Antiguo 21/07/2015, 05:47
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: Cambiar columna varchar(45) a TINYTEXT

¿Por qué necesitas pasar de un VARCHAR a un TINYTEXT?
Un VARCHAR tiene una longitud mínima de 1 caracter, y máxima de 65.535, mientras que la máxima de un TINYTEXT es 255, igual que la de un CHAR...
Si lo que quieres es más longitud de la columna, lo que debes hacer es modificar la longitud de la columna, y no necesariamente cambiar el tipo.
Por otro lado, el error quew te sale es claro: has omitido la longitud de la columna, por lo tanto no puedes declararla así.
Ese tipo de problemas requiere que leas el manual de referencia para verlo bien. No es un error de proceso sino de sintaxis, y los errores de sintaxis se resuelven en el manual.

Creo que alguna vez te lo mencioné...

http://dev.mysql.com/doc/refman/5.6/...uirements.html
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/07/2015, 05:50
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 4 meses
Puntos: 84
Respuesta: Cambiar columna varchar(45) a TINYTEXT

Gracias gnzsoloyo, efectivamente leí el manual, pero en la sintaxis que utilizan en los ejemplos no aparece algo como TINYTEXT(255), solamente aparece TINYTEXT, igual que TEXT también aparece sin especificación de longitud :S
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 21/07/2015, 05:57
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: Cambiar columna varchar(45) a TINYTEXT

De todos modos, como te dije, no le veo utilidad pasar a un TINYTEXT, cuando puedes usar un VARCHAR(255), VARCHAR(1000) o lo que necesites hasta 65535 caracteres.


Lo que debes usar es un
Código MySQL:
Ver original
  1. ALTER TABLE `articles`
  2. CHANGE COLUMN `title` `title` VARCHAR (300) NOT NULL;


No le pongas el COMMENT si no vas a poner comentarios (además los comentarios no son visibles luego desde la aplicación, por lo que son irrelevantes)
__________________
¿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 21/07/2015, 06:12
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 4 meses
Puntos: 84
Respuesta: Cambiar columna varchar(45) a TINYTEXT

Gracias!!! :D gnzsoloyo, te hice caso y cambié el tipo a uno más grande, ya no da problemas al insertar un title más grande. Lo de los comments no sé cómo hacer para que MySQL Workbench no los ponga, los pone por defecto.
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: columna, sql, tabla, update
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 17:24.