workbench - 错误:错误 3734:添加外键约束失败。缺少列
问题描述
尝试创建多对多关系时会发生这种情况,请您帮忙。当我使用“正向工程师”时会发生这种情况。表“cancion”有一个 id 列。尝试创建多对多关系时会发生这种情况,请帮助。当我使用“正向工程师”时会发生这种情况。表“cancion”有一个 id 列。尝试创建多对多关系时会发生这种情况,请帮助。当我使用“正向工程师”时会发生这种情况。“cancion”表有一个 id 列
Executing SQL script in server
ERROR: Error 3734: Failed to add the foreign key constraint. Missing column 'id' for constraint 'fk_CANCION_has_GENERO_CANCION1' in the referenced table 'cancion'
SQL Code:
-- -----------------------------------------------------
-- Table `spotify`.`CANCION_has_GENERO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`CANCION_has_GENERO` (
`CANCION_id` INT NOT NULL,
`GENERO_id` INT NOT NULL,
PRIMARY KEY (`CANCION_id`, `GENERO_id`),
INDEX `fk_CANCION_has_GENERO_GENERO1_idx` (`GENERO_id` ASC) VISIBLE,
INDEX `fk_CANCION_has_GENERO_CANCION1_idx` (`CANCION_id` ASC) VISIBLE,
CONSTRAINT `fk_CANCION_has_GENERO_CANCION1`
FOREIGN KEY (`CANCION_id`)
REFERENCES `spotify`.`CANCION` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANCION_has_GENERO_GENERO1`
FOREIGN KEY (`GENERO_id`)
REFERENCES `spotify`.`GENERO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 18 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
完整脚本:
-- MySQL Workbench Forward Engineering
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='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema spotify
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema spotify
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `spotify` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci ;
USE `spotify` ;
-- -----------------------------------------------------
-- Table `spotify`.`MODELO_DE_NEGOCIO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`MODELO_DE_NEGOCIO` (
`id` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`USUARIO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`USUARIO` (
`id` INT NOT NULL AUTO_INCREMENT,
`email` VARCHAR(100) NOT NULL,
`fecha_de_nacimiento` DATE NOT NULL,
`sexo` VARCHAR(10) NULL,
`codigo_postal` VARCHAR(20) NULL,
`pais` VARCHAR(45) NOT NULL,
`MODELO_DE_NEGOCIO_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_USUARIO_MODELO_DE_NEGOCIO1_idx` (`MODELO_DE_NEGOCIO_id` ASC) VISIBLE,
CONSTRAINT `fk_USUARIO_MODELO_DE_NEGOCIO1`
FOREIGN KEY (`MODELO_DE_NEGOCIO_id`)
REFERENCES `spotify`.`MODELO_DE_NEGOCIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`PASSWORD`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`PASSWORD` (
`id` INT NOT NULL AUTO_INCREMENT,
`pass` VARCHAR(45) NULL,
`fecha_de_modificacion` DATE NULL,
`USUARIO_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_PASSWORD_USUARIO1_idx` (`USUARIO_id` ASC) VISIBLE,
CONSTRAINT `fk_PASSWORD_USUARIO1`
FOREIGN KEY (`USUARIO_id`)
REFERENCES `spotify`.`USUARIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`SERVICIO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`SERVICIO` (
`id` INT NOT NULL AUTO_INCREMENT,
`tipo` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`FORMA_DE_PAGO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`FORMA_DE_PAGO` (
`id` INT UNSIGNED NOT NULL,
`tipo_pago` TINYINT NOT NULL,
`marca_tarjeta_credito` VARCHAR(45) NULL,
`ultimos_4_digitos_tarjeta_credito` TINYINT(4) NULL,
`fecha_de_vencimiento_tarjeta_credito` DATE NULL,
`cbu_o_alias` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`SUSCRIPCION`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`SUSCRIPCION` (
`id` INT NOT NULL AUTO_INCREMENT,
`fecha_inicio_suscipcion` DATE NOT NULL,
`fecha_renovación_servicio` DATE NOT NULL,
`FORMA_DE_PAGO_id` INT UNSIGNED NOT NULL,
`SERVICIO_id` INT NOT NULL,
`FORMA_DE_PAGO_id1` INT UNSIGNED NOT NULL,
`USUARIO_id` INT NOT NULL,
PRIMARY KEY (`id`, `FORMA_DE_PAGO_id`),
INDEX `fk_SUSCRIPCION_SERVICIO1_idx` (`SERVICIO_id` ASC) VISIBLE,
INDEX `fk_SUSCRIPCION_FORMA_DE_PAGO1_idx` (`FORMA_DE_PAGO_id1` ASC) VISIBLE,
INDEX `fk_SUSCRIPCION_USUARIO1_idx` (`USUARIO_id` ASC) VISIBLE,
CONSTRAINT `fk_SUSCRIPCION_SERVICIO1`
FOREIGN KEY (`SERVICIO_id`)
REFERENCES `spotify`.`SERVICIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_SUSCRIPCION_FORMA_DE_PAGO1`
FOREIGN KEY (`FORMA_DE_PAGO_id1`)
REFERENCES `spotify`.`FORMA_DE_PAGO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_SUSCRIPCION_USUARIO1`
FOREIGN KEY (`USUARIO_id`)
REFERENCES `spotify`.`USUARIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`PLAYLIST`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`PLAYLIST` (
`id` INT NOT NULL AUTO_INCREMENT,
`titulo` VARCHAR(45) NOT NULL,
`numero_de_canciones` INT NOT NULL,
`fecha_de_creacion` DATE NOT NULL,
`activa` TINYINT NOT NULL,
`fecha_eliminacion` DATE NULL,
`USUARIO_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_PLAYLIST_USUARIO1_idx` (`USUARIO_id` ASC) VISIBLE,
CONSTRAINT `fk_PLAYLIST_USUARIO1`
FOREIGN KEY (`USUARIO_id`)
REFERENCES `spotify`.`USUARIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`ARTISTA`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`ARTISTA` (
`id` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(100) NOT NULL,
`url_imagen_artista` VARCHAR(300) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`DISCOGRAFIA`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`DISCOGRAFIA` (
`id` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NOT NULL,
`pais` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`ALBUM`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`ALBUM` (
`id` INT NOT NULL AUTO_INCREMENT,
`titulo` VARCHAR(100) NOT NULL,
`anio_publicacion` YEAR NULL,
`url_imagen_portada` VARCHAR(300) NULL,
`ARTISTA_id` INT NOT NULL,
`DISCOGRAFIA_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_ALBUM_ARTISTA1_idx` (`ARTISTA_id` ASC) VISIBLE,
INDEX `fk_ALBUM_DISCOGRAFIA1_idx` (`DISCOGRAFIA_id` ASC) VISIBLE,
CONSTRAINT `fk_ALBUM_ARTISTA1`
FOREIGN KEY (`ARTISTA_id`)
REFERENCES `spotify`.`ARTISTA` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_ALBUM_DISCOGRAFIA1`
FOREIGN KEY (`DISCOGRAFIA_id`)
REFERENCES `spotify`.`DISCOGRAFIA` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`CANCION`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`CANCION` (
`id` INT NOT NULL AUTO_INCREMENT,
`titulo` VARCHAR(45) NOT NULL,
`duracion` INT NULL,
`numero_reproducciones` INT NULL,
`likes` INT NULL,
`ALBUM_id` INT NOT NULL,
INDEX `fk_CANCION_ALBUM1_idx` (`ALBUM_id` ASC) VISIBLE,
PRIMARY KEY (`id`),
CONSTRAINT `fk_CANCION_ALBUM1`
FOREIGN KEY (`ALBUM_id`)
REFERENCES `spotify`.`ALBUM` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`GENERO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`GENERO` (
`id` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`PAGO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`PAGO` (
`id` INT NOT NULL AUTO_INCREMENT,
`fecha` DATE NOT NULL,
`monto` FLOAT NULL,
`FORMA_DE_PAGO_id` INT UNSIGNED NOT NULL,
`USUARIO_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_PAGO_FORMA_DE_PAGO1_idx` (`FORMA_DE_PAGO_id` ASC) VISIBLE,
INDEX `fk_PAGO_USUARIO1_idx` (`USUARIO_id` ASC) VISIBLE,
CONSTRAINT `fk_PAGO_FORMA_DE_PAGO1`
FOREIGN KEY (`FORMA_DE_PAGO_id`)
REFERENCES `spotify`.`FORMA_DE_PAGO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_PAGO_USUARIO1`
FOREIGN KEY (`USUARIO_id`)
REFERENCES `spotify`.`USUARIO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`CANCION_has_GENERO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`CANCION_has_GENERO` (
`CANCION_id` INT NOT NULL,
`GENERO_id` INT NOT NULL,
PRIMARY KEY (`CANCION_id`, `GENERO_id`),
INDEX `fk_CANCION_has_GENERO_GENERO1_idx` (`GENERO_id` ASC) VISIBLE,
INDEX `fk_CANCION_has_GENERO_CANCION1_idx` (`CANCION_id` ASC) VISIBLE,
CONSTRAINT `fk_CANCION_has_GENERO_CANCION1`
FOREIGN KEY (`CANCION_id`)
REFERENCES `spotify`.`CANCION` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANCION_has_GENERO_GENERO1`
FOREIGN KEY (`GENERO_id`)
REFERENCES `spotify`.`GENERO` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `spotify`.`PLAYLIST_has_CANCION`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `spotify`.`PLAYLIST_has_CANCION` (
`PLAYLIST_id` INT NOT NULL,
`CANCION_id` INT NOT NULL,
PRIMARY KEY (`PLAYLIST_id`, `CANCION_id`),
INDEX `fk_PLAYLIST_has_CANCION_CANCION1_idx` (`CANCION_id` ASC) VISIBLE,
INDEX `fk_PLAYLIST_has_CANCION_PLAYLIST1_idx` (`PLAYLIST_id` ASC) VISIBLE,
CONSTRAINT `fk_PLAYLIST_has_CANCION_PLAYLIST1`
FOREIGN KEY (`PLAYLIST_id`)
REFERENCES `spotify`.`PLAYLIST` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_PLAYLIST_has_CANCION_CANCION1`
FOREIGN KEY (`CANCION_id`)
REFERENCES `spotify`.`CANCION` (`id`)
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;
解决方案
推荐阅读
- html - 如何在 HTML5 视频播放器中将字幕居中?如何进一步设置字幕/字幕的样式?
- drools - Drools 比较一个列表是否包含另一个列表中的元素
- excel - 如何通过excel函数自动从动态表中提取信息?
- flutter - 表单有效时立即显示元素
- javascript - 引导警报:如何在关闭时“隐藏”它们而不删除它们?
- c# - 如何在 Powershell 中使用 Invoke-WebRequest 构建和检查 MultipartFormData 对象?
- c# - 使用 OpenCV 测量位图中的小斑点
- c++ - 当我们进行一些操作时,应该使用什么 `std::string` 或 `std::stringstream`?
- python - 在 OpenCV 中检测到的裁剪特征
- android - Android 应用内购买计费客户端在构建时崩溃