Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2014, 16:11
ZeroDrako
 
Fecha de Ingreso: marzo-2014
Ubicación: Mexico
Mensajes: 5
Antigüedad: 10 años, 2 meses
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.