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

[SOLUCIONADO] por que no me deja cambiar el nombre de un campo

Estas en el tema de por que no me deja cambiar el nombre de un campo en el foro de Mysql en Foros del Web. en este esquema @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SET @OLD_UNIQUE_CHECKS = @@UNIQUE_CHECKS , UNIQUE_CHECKS = 0 ; SET @OLD_FOREIGN_KEY_CHECKS = @@FOREIGN_KEY_CHECKS , FOREIGN_KEY_CHECKS = ...
  #1 (permalink)  
Antiguo 11/12/2014, 01:36
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 9 años, 5 meses
Puntos: 0
por que no me deja cambiar el nombre de un campo

en este esquema

Código MySQL:
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,ALLOW_INVALID_DATES';
  4.  
  5. CREATE SCHEMA IF NOT EXISTS `stocklentesbrujuleando` DEFAULT CHARACTER SET utf8 ;
  6. USE `stocklentesbrujuleando` ;
  7.  
  8. -- -----------------------------------------------------
  9. -- Table `stocklentesbrujuleando`.`cilindro`
  10. -- -----------------------------------------------------
  11. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`cilindro` (
  12.   `ID_cil` INT(2) NOT NULL AUTO_INCREMENT ,
  13.   `cilindro` DECIMAL(5,2) NOT NULL ,
  14.   PRIMARY KEY (`ID_cil`) )
  15. DEFAULT CHARACTER SET = utf8;
  16.  
  17.  
  18. -- -----------------------------------------------------
  19. -- Table `stocklentesbrujuleando`.`esfera`
  20. -- -----------------------------------------------------
  21. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`esfera` (
  22.   `ID_esf` INT(5) NOT NULL AUTO_INCREMENT ,
  23.   `esfera` DECIMAL(5,2) NOT NULL ,
  24.   PRIMARY KEY (`ID_esf`) )
  25. DEFAULT CHARACTER SET = utf8;
  26.  
  27.  
  28. -- -----------------------------------------------------
  29. -- Table `stocklentesbrujuleando`.`lentes`
  30. -- -----------------------------------------------------
  31. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`lentes` (
  32.   `ID_lente` INT(2) NOT NULL AUTO_INCREMENT ,
  33.   `lente` VARCHAR(25) NOT NULL ,
  34.   `desc` VARCHAR(45) NOT NULL ,
  35.   `Abbe` INT(2) NOT NULL ,
  36.   `densidad` VARCHAR(15) NOT NULL ,
  37.   `geometría` VARCHAR(15) NOT NULL ,
  38.   PRIMARY KEY (`ID_lente`) ,
  39.   UNIQUE INDEX `tipo` (`lente` ASC) )
  40. DEFAULT CHARACTER SET = utf8;
  41.  
  42.  
  43. -- -----------------------------------------------------
  44. -- Table `stocklentesbrujuleando`.`rx`
  45. -- -----------------------------------------------------
  46. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`rx` (
  47.   `Id_Rx` INT(2) NOT NULL DEFAULT '0' ,
  48.   `id_cil` INT(2) NOT NULL ,
  49.   `id_esf` INT(5) NOT NULL ,
  50.   PRIMARY KEY (`Id_Rx`) ,
  51.   INDEX `fk_rx_cilindro1_idx` (`id_cil` ASC) ,
  52.   INDEX `fk_rx_esfera1_idx` (`id_esf` ASC) ,
  53.   CONSTRAINT `fk_rx_cilindro1`
  54.     FOREIGN KEY (`id_cil` )
  55.     REFERENCES `stocklentesbrujuleando`.`cilindro` (`ID_cil` )
  56.   CONSTRAINT `fk_rx_esfera1`
  57.     FOREIGN KEY (`id_esf` )
  58.     REFERENCES `stocklentesbrujuleando`.`esfera` (`ID_esf` )
  59. DEFAULT CHARACTER SET = utf8;
  60.  
  61.  
  62. -- -----------------------------------------------------
  63. -- Table `stocklentesbrujuleando`.`item`
  64. -- -----------------------------------------------------
  65. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`item` (
  66.   `item_ID` INT(5) NOT NULL AUTO_INCREMENT ,
  67.   `id_rx` INT(2) NOT NULL ,
  68.   `id_lente` INT(2) NOT NULL ,
  69.   PRIMARY KEY (`item_ID`) ,
  70.   INDEX `fk_item_lentes1_idx` (`id_lente` ASC) ,
  71.   INDEX `fk_item_rx1_idx` (`id_rx` ASC) ,
  72.   CONSTRAINT `fk_item_lentes1`
  73.     FOREIGN KEY (`id_lente` )
  74.     REFERENCES `stocklentesbrujuleando`.`lentes` (`ID_lente` )
  75.   CONSTRAINT `fk_item_rx1`
  76.     FOREIGN KEY (`id_rx` )
  77.     REFERENCES `stocklentesbrujuleando`.`rx` (`Id_Rx` )
  78. DEFAULT CHARACTER SET = utf8;
  79.  
  80.  
  81. -- -----------------------------------------------------
  82. -- Table `stocklentesbrujuleando`.`movimiento`
  83. -- -----------------------------------------------------
  84. CREATE  TABLE IF NOT EXISTS `stocklentesbrujuleando`.`movimiento` (
  85.   `venta` INT(5) UNSIGNED NULL ,
  86.   `compra` INT(5) UNSIGNED NULL ,
  87.   `taller` INT(5) UNSIGNED NULL ,
  88.   `regula_mas` INT(5) UNSIGNED NULL ,
  89.   `regula_menos` INT(5) UNSIGNED NULL ,
  90.   `fecha` TIMESTAMP NOT NULL ,
  91.   `id_item` INT(5) NOT NULL ,
  92.   `id_lente` INT(2) NULL ,
  93.   `id_cilindro` INT(2) NULL ,
  94.   `id_esfera` INT(5) NULL ,
  95.   PRIMARY KEY (`id_mov`) ,
  96.   INDEX `fk_salida_item1_idx` (`id_item` ASC) ,
  97.   INDEX `fk_movimiento_lentes1_idx` (`id_lente` ASC) ,
  98.   INDEX `fk_movimiento_cilindro1_idx` (`id_cilindro` ASC) ,
  99.   INDEX `fk_movimiento_esfera1_idx` (`id_esfera` ASC) ,
  100.   CONSTRAINT `fk_salida_item1`
  101.     FOREIGN KEY (`id_item` )
  102.     REFERENCES `stocklentesbrujuleando`.`item` (`item_ID` )
  103.   CONSTRAINT `fk_movimiento_lentes1`
  104.     FOREIGN KEY (`id_lente` )
  105.     REFERENCES `stocklentesbrujuleando`.`lentes` (`ID_lente` )
  106.   CONSTRAINT `fk_movimiento_cilindro1`
  107.     FOREIGN KEY (`id_cilindro` )
  108.     REFERENCES `stocklentesbrujuleando`.`cilindro` (`ID_cil` )
  109.   CONSTRAINT `fk_movimiento_esfera1`
  110.     FOREIGN KEY (`id_esfera` )
  111.     REFERENCES `stocklentesbrujuleando`.`esfera` (`ID_esf` )
  112. DEFAULT CHARACTER SET = utf8;
  113.  
  114.  
  115.  
  116. SET SQL_MODE=@OLD_SQL_MODE;
  117. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  118. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

no puedo cambiar el nombre de item.item_ID por item.id_item , me da este error

#1025 - Error on rename of '.\stocklentesbrujuleando3\#sql-66c_83' to '.\stocklentesbrujuleando3\item' (errno: 150)

podría solucionarlo?
  #2 (permalink)  
Antiguo 11/12/2014, 03:04
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, 5 meses
Puntos: 2658
Respuesta: por que no me deja cambiar el nombre de un campo

Si las tablas tienen datos, y esa columna es FK en otra tabla, no te lo permite porque internamente MySQL realiza en estos casos un borrado de tabla para recrearla, y eso genera el fallo por dependencia funcional.
La primero que deberías hacer es vaciar completamente las tablas antes de intentar eso.
Veamos si con eso alcanza
__________________
¿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 11/12/2014, 04:10
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: por que no me deja cambiar el nombre de un campo

pues ni con esas, lo que he hecho es.

hacer una copia de seguridad del esquema, y en el sql resultante buscar item_ID y sustituirlo por id_item. Creo que ha quedado resuelto.

de este modo luego me resultará más sencillo porque todos los campos que son clave comienzan por id_ y este en concreto me resultaba lioso al ir al revés.

gracias por la respuesta.

Etiquetas: campo, key, nombre, sql, 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 12:10.