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

Error 1005 selectivo

Estas en el tema de Error 1005 selectivo en el foro de Mysql en Foros del Web. Hola, es posible que el título de este tema deje intrigado a más de uno, pero es que mi situación es algo así como un ...
  #1 (permalink)  
Antiguo 28/04/2016, 11:54
 
Fecha de Ingreso: diciembre-2014
Ubicación: montería
Mensajes: 33
Antigüedad: 10 años
Puntos: 0
Busqueda Error 1005 selectivo

Hola, es posible que el título de este tema deje intrigado a más de uno, pero es que mi situación es algo así como un capricho selectivo de MySQL resaltando mi desconocimiento en alguna operación de las que realizo.

Al grano tengo estas tablas:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `mydb`.`clase` (
  2.   `idclase` INT(11) NOT NULL,
  3.   PRIMARY KEY (`idclase`))
  4. DEFAULT CHARACTER SET = utf8;
  5.  
  6.  
  7. -- -----------------------------------------------------
  8. -- Table `mydb`.`metodo`
  9. -- -----------------------------------------------------
  10. CREATE TABLE IF NOT EXISTS `mydb`.`metodo` (
  11.   `idmetodo` INT(11) NOT NULL,
  12.   `clase_idclase` INT(11) NOT NULL,
  13.   PRIMARY KEY (`idmetodo`, `clase_idclase`),
  14.   INDEX `fk_metodo_clase_idx` (`clase_idclase` ASC),
  15.   CONSTRAINT `fk_metodo_clase`
  16.     FOREIGN KEY (`clase_idclase`)
  17.     REFERENCES `mydb`.`clase` (`idclase`)
  18. DEFAULT CHARACTER SET = utf8;
  19.  
  20.  
  21. -- -----------------------------------------------------
  22. -- Table `mydb`.`parametro`
  23. -- -----------------------------------------------------
  24. CREATE TABLE IF NOT EXISTS `mydb`.`parametro` (
  25.   `idparametro` INT(11) NOT NULL,
  26.   `metodo_idmetodo` INT(11) NOT NULL,
  27.   `metodo_clase_idclase` INT(11) NOT NULL,
  28.   PRIMARY KEY (`idparametro`, `metodo_idmetodo`, `metodo_clase_idclase`),
  29.   INDEX `fk_parametro_metodo1_idx` (`metodo_idmetodo` ASC, `metodo_clase_idclase` ASC),
  30.   CONSTRAINT `fk_parametro_metodo1`
  31.     FOREIGN KEY (`metodo_idmetodo` , `metodo_clase_idclase`)
  32.     REFERENCES `mydb`.`metodo` (`idmetodo` , `clase_idclase`)
  33. DEFAULT CHARACTER SET = utf8;
¡Algo muy simple cierto! La situación es que tal cual como esta funciona, sin embargo, cuando quiero crear la misma estructura de tablas con sus relaciones exactamente así solo cambiando el nombre de la base de datos por obvias razones algo así:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `otradb`.`clase` (
  2.   `idclase` INT(11) NOT NULL,
  3.   PRIMARY KEY (`idclase`))
  4. DEFAULT CHARACTER SET = utf8;
  5.  
  6.  
  7. -- -----------------------------------------------------
  8. -- Table `otradb`.`metodo`
  9. -- -----------------------------------------------------
  10. CREATE TABLE IF NOT EXISTS `otradb`.`metodo` (
  11.   `idmetodo` INT(11) NOT NULL,
  12.   `clase_idclase` INT(11) NOT NULL,
  13.   PRIMARY KEY (`idmetodo`, `clase_idclase`),
  14.   INDEX `fk_metodo_clase_idx` (`clase_idclase` ASC),
  15.   CONSTRAINT `fk_metodo_clase`
  16.     FOREIGN KEY (`clase_idclase`)
  17.     REFERENCES `otradb`.`clase` (`idclase`)
  18. DEFAULT CHARACTER SET = utf8;
  19.  
  20.  
  21. -- -----------------------------------------------------
  22. -- Table `otradb`.`parametro`
  23. -- -----------------------------------------------------
  24. CREATE TABLE IF NOT EXISTS `otradb`.`parametro` (
  25.   `idparametro` INT(11) NOT NULL,
  26.   `metodo_idmetodo` INT(11) NOT NULL,
  27.   `metodo_clase_idclase` INT(11) NOT NULL,
  28.   PRIMARY KEY (`idparametro`, `metodo_idmetodo`, `metodo_clase_idclase`),
  29.   INDEX `fk_parametro_metodo1_idx` (`metodo_idmetodo` ASC, `metodo_clase_idclase` ASC),
  30.   CONSTRAINT `fk_parametro_metodo1`
  31.     FOREIGN KEY (`metodo_idmetodo` , `metodo_clase_idclase`)
  32.     REFERENCES `otradb`.`metodo` (`idmetodo` , `clase_idclase`)
  33. DEFAULT CHARACTER SET = utf8;

En este caso otradb es una base de datos existente, tiene sus tablas y relaciones respectivas. Dejo claro que siempre uso por defecto innoDB para todas las tablas y que manejo el mismo conjunto de caracteres utf8, además ningún nombre de tabla se repite, ni tampoco existe algún índice con nombres duplicados o semejante. Lo cierto es todo esto me parte la cabeza…

Otro punto que quizás deba aclarar es que si hago por ejemplo esto:

Código MySQL:
Ver original
  1. -- -----------------------------------------------------
  2. -- Table `otradb`.`parametro`
  3. -- -----------------------------------------------------
  4. CREATE TABLE IF NOT EXISTS `otradb`.`parametro` (
  5.   `idparametro` INT(11) NOT NULL,
  6.   `metodo_idmetodo` INT(11) NOT NULL,
  7.   `metodo_clase_idclase` INT(11) NOT NULL,
  8.   PRIMARY KEY (`idparametro`, `metodo_idmetodo`, `metodo_clase_idclase`),
  9.   INDEX `fk_parametro_metodo1_idx` (`metodo_idmetodo` ASC, `metodo_clase_idclase` ASC)
  10. DEFAULT CHARACTER SET = utf8;
  11.  
  12. ALTER TABLE `otradb`.`parametro`
  13. ADD CONSTRAINT `fk_parametro_metodo1`
  14.   FOREIGN KEY (`metodo_idmetodo` , `metodo_clase_idclase`)
  15.   REFERENCES ` otradb `.`metodo` (`idmetodo` , `clase_idclase`)

Con eso si funciona ¿Qué es lo que pasa entonces? Ahora de seguro se preguntan porque me lió con todo esto si tengo la solución y el caso es sencillo, el primer método es como me lo genera la sincronización de modelo MySQL WORKBENCH y bueno me resulta muy cómodo solo presionar CRTL+SHIFT+Z y que se vaya actualizando mi base de datos según el modelo que voy dibujando.

Agradezco de antemano la atención prestada y recibo con afecto cualquier colaboración con respecto a este tema.
  #2 (permalink)  
Antiguo 28/04/2016, 12:17
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Error 1005 selectivo

No sera porque tus indices y llaves foraneas tienen el mismo nombre???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: foreignkey, mysql-error
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 04:49.