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

Tablas Federadas Mysql con Foreign Key

Estas en el tema de Tablas Federadas Mysql con Foreign Key en el foro de Mysql en Foros del Web. Tengo un problema al realizar la federación de las tablas en MySQL, Activo los motores de feredacion en ambos equipos, creo el usuario y los ...
  #1 (permalink)  
Antiguo 04/04/2014, 16:11
 
Fecha de Ingreso: marzo-2014
Ubicación: Mexico
Mensajes: 5
Antigüedad: 10 años, 1 mes
Puntos: 0
Tablas Federadas Mysql con Foreign Key

Tengo un problema al realizar la federación de las tablas en MySQL, Activo los motores de feredacion en ambos equipos, creo el usuario y los permisos correctamente, el problema es:

Esta es mi DB en el Equipo 1 (Windows)
Código:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `conducir` DEFAULT CHARACTER SET utf8 ;
USE `conducir` ;

-- -----------------------------------------------------
-- Table `conducir`.`pais`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `conducir`.`pais` (
  `idpais` INT NOT NULL,
  `nombre` VARCHAR(45) NULL,
  PRIMARY KEY (`idpais`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `conducir`.`persona`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `conducir`.`persona` (
  `curp` VARCHAR(25) NOT NULL,
  `nombre` VARCHAR(45) NULL,
  `apellidop` VARCHAR(45) NULL,
  `edad` VARCHAR(45) NULL,
  `pais_idpais` INT NOT NULL,
  PRIMARY KEY (`curp`),
  INDEX `fk_persona_pais1_idx` (`pais_idpais` ASC),
  CONSTRAINT `fk_persona_pais1`
    FOREIGN KEY (`pais_idpais`)
    REFERENCES `conducir`.`pais` (`idpais`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `conducir`.`licencia`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `conducir`.`licencia` (
  `numero` VARCHAR(45) NOT NULL,
  `persona_curp` VARCHAR(25) NOT NULL,
  `fechasolucitud` VARCHAR(45) NULL,
  PRIMARY KEY (`numero`),
  INDEX `fk_licencia_persona_idx` (`persona_curp` ASC),
  CONSTRAINT `fk_licencia_persona`
    FOREIGN KEY (`persona_curp`)
    REFERENCES `conducir`.`persona` (`curp`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Esta es mi DB en el Equipo 2 (Ubuntu)
Código:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

CREATE SCHEMA IF NOT EXISTS `conducir` DEFAULT CHARACTER SET utf8 ;
USE `conducir` ;

-- -----------------------------------------------------
-- Table `conducir`.`licencia`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `conducir`.`licencia` (
  `numero` VARCHAR(45) NOT NULL,
  `persona_curp` VARCHAR(25) NOT NULL,
  `fechasolucitud` VARCHAR(45) NULL,
  PRIMARY KEY (`numero`),
  INDEX `fk_licencia_persona_idx` (`persona_curp` ASC),
  CONSTRAINT `fk_licencia_persona`
    FOREIGN KEY (`persona_curp`)
    REFERENCES `conducir`.`persona` (`curp`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://Prueba1:[email protected]:3306/conducir/licencia';


-- -----------------------------------------------------
-- Table `conducir`.`pasaporte`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `conducir`.`pasaporte` (
  `idpasaporte` INT NOT NULL,
  `licencia_numero` VARCHAR(45) NOT NULL,
  `diashabiles` VARCHAR(45) NULL,
  PRIMARY KEY (`idpasaporte`),
  INDEX `fk_pasaporte_licencia1_idx` (`licencia_numero` ASC),
  CONSTRAINT `fk_pasaporte_licencia1`
    FOREIGN KEY (`licencia_numero`)
    REFERENCES `conducir`.`licencia` (`numero`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Al insertar, modificar, eliminar datos en el Equipo 1 no hay problema, el problema es en el Equipo 2:
-la tabla federada licencia puedo hacer todas las operaciones sin problemas...
-Al intentar INGRESAR datos en la tabla pasaporte me dice que hay un error al con un llamado perdido a la llave foránea licencia_numero, me dice en concreto que no puedo modificar, actualizar datos...


No se el porque de este error, es un error de una tabla que no esta federada, por supuesto es una DB de prueba, pero la prove de forma local y funciona sin problemas.

E visto comentarios como el siguiente, pero no dicen el porque o como solucionarlo
Cita:
Federated tables (as mentioned) does not allow foreign keys....

If I have the original DB with foreign keys located at server one (1) and my data base located at server two (2), I cant make all the tables federated at (1) because federated tables dont have that support.
Aclaro que es un proyecto que me dejaron en la universidad, desconozco si esto siquiera es posible, ya que no encuentro información en concreto sobre este tema.
Espero me puedan ayudar, Gracias.

Etiquetas: key, null, sql, tabla, tablas
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 09:50.