locked
Error al crear una tabla RRS feed

  • Pregunta

  • Hola. He creado este esquema y tamnién he creado automáticamente el correspondiente código para crear las tablas, pero al ejecutarlo en el editor me dice que no se puede crear la tabla "pedidos". Me imagino que es un problema de relaciones. Alguien me puede decir el error y si hay una mejor forma de hacerlo? Gracias

    martes, 1 de mayo de 2012 21:37

Respuestas

Todas las respuestas

  • Hola.

    Indícanos qué estás ejecutando, cómo (con qué herramienta) y, sobre todo, qué error te da exactamente para que podamos orientarte.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 1 de mayo de 2012 21:40
    Moderador
  • Hola. El esquema y el código los hice en MySql Workbench. El código lo ejecuté en el editor de MySql. El error que arroja es error Code: 1005. Can't create  table 'estudio.pedidos' (errno: 121).

    La DB que estoy intentando se trata de:

    • Para cada cliente se registra: Número de cliente (único), Direcciones de envío  de la mercancía (varias por cliente), Saldo, Límite de crédito, Descuento. (depende por dirección de envío).

    El código que se generó a partir del esquema que hice es el siguiente (muchas gracias):

    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';

    CREATE SCHEMA IF NOT EXISTS `estudio` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

    USE `estudio` ;

    -- -----------------------------------------------------

    -- Table `estudio`.`articulo`

    -- -----------------------------------------------------

    CREATE  TABLE IF NOT EXISTS `estudio`.`articulo` (

      `id_articulo` INT NOT NULL ,

      `nom_art` VARCHAR(45) NOT NULL ,

      `precio` DECIMAL(10,2) NOT NULL ,

      `descripcion` VARCHAR(45) NOT NULL ,

      PRIMARY KEY (`id_articulo`) )

    ENGINE = InnoDB;

    -- -----------------------------------------------------

    -- Table `estudio`.`clientes`

    -- -----------------------------------------------------

    CREATE  TABLE IF NOT EXISTS `estudio`.`clientes` (

      `id_clientes` INT NOT NULL ,

      `nombre` VARCHAR(45) NOT NULL ,

      `app` VARCHAR(45) NOT NULL ,

      `apm` VARCHAR(45) NOT NULL ,

      `saldo` DECIMAL(10,2) NOT NULL ,

      `limite` DECIMAL(10,2) NOT NULL ,

      PRIMARY KEY (`id_clientes`) )

    ENGINE = InnoDB;

    -- -----------------------------------------------------

    -- Table `estudio`.`direcciones`

    -- -----------------------------------------------------

    CREATE  TABLE IF NOT EXISTS `estudio`.`direcciones` (

      `id_direcciones` INT NOT NULL ,

      `id_clientes` INT NOT NULL ,

      `direccion` VARCHAR(45) NOT NULL ,

      `id_descuentos` INT NOT NULL ,

      PRIMARY KEY (`id_direcciones`) ,

      INDEX `id_clientes` (`id_clientes` ASC) ,

      CONSTRAINT `id_clientes`

        FOREIGN KEY (`id_clientes` )

        REFERENCES `estudio`.`clientes` (`id_clientes` )

        ON DELETE CASCADE

        ON UPDATE CASCADE)

    ENGINE = InnoDB;

    -- -----------------------------------------------------

    -- Table `estudio`.`descuentos`

    -- -----------------------------------------------------

    CREATE  TABLE IF NOT EXISTS `estudio`.`descuentos` (

      `id_descuentos` INT NOT NULL ,

      `descuento` DECIMAL(10,2) NOT NULL ,

      PRIMARY KEY (`id_descuentos`) )

    ENGINE = InnoDB;

    -- -----------------------------------------------------

    -- Table `estudio`.`pedidos`

    -- -----------------------------------------------------

    CREATE  TABLE IF NOT EXISTS `estudio`.`pedidos` (

      `id_pedidos` INT NOT NULL ,

      `id_articulo` INT NOT NULL ,

      `id_clientes` INT NOT NULL ,

      `id_direcciones` INT NOT NULL ,

      `id_descuentos` INT NOT NULL ,

      PRIMARY KEY (`id_pedidos`) ,

      INDEX `id_direcciones` (`id_direcciones` ASC) ,

      INDEX `id_clientes` (`id_clientes` ASC) ,

      INDEX `id_descuentos` (`id_descuentos` ASC) ,

      CONSTRAINT `id_direcciones`

        FOREIGN KEY (`id_direcciones` )

        REFERENCES `estudio`.`direcciones` (`id_direcciones` )

        ON DELETE CASCADE

        ON UPDATE CASCADE,

      CONSTRAINT `id_clientes`

        FOREIGN KEY (`id_clientes` )

        REFERENCES `estudio`.`clientes` (`id_clientes` )

        ON DELETE CASCADE

        ON UPDATE CASCADE,

      CONSTRAINT `id_descuentos`

        FOREIGN KEY (`id_descuentos` )

        REFERENCES `estudio`.`descuentos` (`id_descuentos` )

        ON DELETE CASCADE

        ON UPDATE CASCADE)

    ENGINE = InnoDB;

    SET SQL_MODE=@OLD_SQL_MODE;

    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

    martes, 1 de mayo de 2012 22:08
  • Hola.

    Este foro es de SQL Server, no de MySQL, deberás buscar un foro que verse sobre ese motor. Estado off-topic, doy el hilo por cerrado.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 2 de mayo de 2012 11:41
    Moderador