我正在嘗試使用此腳本創建數據庫。但我在黑洞。我不知道現在該做什麼。這是我的MySQL代碼。請有人踢我。創建MySQL的更多外鍵
如果我使用一個外鍵就沒問題,但我不知道如何使用更多的外鍵。
EROOR爲:
#1005 - Can't create table 'ruda_dev_souteze2.results' (errno: 150)
查詢:
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `ruda_dev_souteze2` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci ;
USE `ruda_dev_souteze2` ;
-- -----------------------------------------------------
-- Table `ruda_dev_souteze2`.`contests`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ruda_dev_souteze2`.`contests` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`date` DATE NOT NULL ,
`public` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 11
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
-- -----------------------------------------------------
-- Table `ruda_dev_souteze2`.`people`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ruda_dev_souteze2`.`people` (
`contest_id` BIGINT(20) NOT NULL ,
`number` INT(11) NOT NULL ,
`category` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`fname` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`lname` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
PRIMARY KEY (`contest_id`, `number`) ,
INDEX `id_idx` (`contest_id` ASC) ,
CONSTRAINT `cidfp`
FOREIGN KEY (`contest_id`)
REFERENCES `ruda_dev_souteze2`.`contests` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
-- -----------------------------------------------------
-- Table `ruda_dev_souteze2`.`subjects`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ruda_dev_souteze2`.`subjects` (
`contest_id` BIGINT(20) NOT NULL ,
`number` INT(11) NOT NULL ,
`name` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`direct` TINYINT(1) NOT NULL ,
`type` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`subjectscol` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NULL DEFAULT NULL ,
PRIMARY KEY (`contest_id`, `number`) ,
INDEX `id_idx` (`contest_id` ASC) ,
CONSTRAINT `cidfs`
FOREIGN KEY (`contest_id`)
REFERENCES `ruda_dev_souteze2`.`contests` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
-- -----------------------------------------------------
-- Table `ruda_dev_souteze2`.`results`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ruda_dev_souteze2`.`results` (
`contest_id` BIGINT(20) NOT NULL ,
`subject_number` INT(11) NOT NULL ,
`people_number` INT(11) NOT NULL ,
`number_8c2` FLOAT(10,2) NULL DEFAULT NULL ,
`time_time` TIME NULL DEFAULT NULL ,
`time_frag` FLOAT(2,2) NULL DEFAULT NULL ,
PRIMARY KEY (`contest_id`, `subject_number`, `people_number`) ,
INDEX `cidfr_idx` (`contest_id` ASC) ,
INDEX `snfr_idx` (`subject_number` ASC) ,
INDEX `pnfr_idx` (`people_number` ASC) ,
CONSTRAINT `cidfr`
FOREIGN KEY (`contest_id`)
REFERENCES `ruda_dev_souteze2`.`contests` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `snfr`
FOREIGN KEY (`subject_number`)
REFERENCES `ruda_dev_souteze2`.`subjects` (`number`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `pnfr`
FOREIGN KEY (`people_number`)
REFERENCES `ruda_dev_souteze2`.`people` (`number`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
-- -----------------------------------------------------
-- Table `ruda_dev_souteze2`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `ruda_dev_souteze2`.`users` (
`username` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`fullname` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
`password` BINARY(40) NOT NULL ,
`access` CHAR(1) CHARACTER SET 'utf8' COLLATE 'utf8_czech_ci' NOT NULL ,
PRIMARY KEY (`username`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_czech_ci;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
您是否收到錯誤(如果是這樣,它是什麼)?你想要第二個/附加的外鍵在哪個表/列上?我不是70%確定我明白你需要幫助。 – newfurniturey
對不起,你的問題是什麼?你在你的SQL中定義了幾個不同的FOREIGN KEY,你是否會出現某種錯誤? –
編輯。我得到錯誤 –