Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2010, 09:57
Joaquin2111
 
Fecha de Ingreso: diciembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 0
Cambiar columna INT a UNSIGNED INT

Hola Gente.

Como dice el título intento cambiar una columna de tipo INT a UNSIGNED INT pero una vez ya está creada y me muestra el siguiente error:
Código SQL:
Ver original
  1. /* SQL Error (1025): Error on rename of '.\bbdd\#sql-844_2c07' to '.\bbdd\atributos' (errno: 150)  Foreign key constraint is incorrectly formed */

El código de creación de la tabla es el siguiente:
Código SQL:
Ver original
  1. CREATE TABLE `atributos` (
  2.     `id_atributo` INT(10) NOT NULL AUTO_INCREMENT,
  3.     `nombre` VARCHAR(50) NOT NULL,
  4.     `columna` VARCHAR(50) NOT NULL,
  5.     `tipo` VARCHAR(45) NOT NULL DEFAULT 'text',
  6.     `editable` TINYINT(1) NOT NULL DEFAULT '1',
  7.     `data` VARCHAR(255) NULL DEFAULT NULL,
  8.     PRIMARY KEY (`id_atributo`)
  9. )
  10. ENGINE=InnoDB
  11. ROW_FORMAT=DEFAULT
  12. AUTO_INCREMENT=18
Y la consulta que lanzo es la siguiente:
Código SQL:
Ver original
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
  4. ALTER TABLE `atributos` CHANGE COLUMN `id_atributo` `id_atributo` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT  ;
  5. SET SQL_MODE=@OLD_SQL_MODE;
  6. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  7. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Por lo que me ha parecido ver en algunos sitios, una vez creada la tabla, ya no puedes cambiar a unsiged el campo, pero eso me extraña un poco.

Alguien tiene idea de que puede ser?

Muchas gracias.