Mysql fk引用上的数据类型未知
我试图在我的H2数据库中运行这个mysql命令。数据库设置为mysql模式Mysql fk引用上的数据类型未知,mysql,sql,h2,Mysql,Sql,H2,我试图在我的H2数据库中运行这个mysql命令。数据库设置为mysql模式 -- ----------------------------------------------------- -- Table `users` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL, `username` VARCHAR(45
-- -----------------------------------------------------
-- Table `users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `users` (
`id` INT NOT NULL,
`username` VARCHAR(45) NOT NULL COMMENT ' ',
`email` VARCHAR(320) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `serverprojects`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `serverprojects` (
`id` INT NOT NULL,
`name` VARCHAR(100) NOT NULL,
`status` TINYINT(1) NULL,
`restorescript_relative_path` VARCHAR(255) NULL,
`backupscript_relative_path` VARCHAR(255) NULL,
`installscript_relative_path` VARCHAR(255) NULL,
`username` VARCHAR(100) NULL,
`password` VARCHAR(100) NULL,
`gradle_relative_path` VARCHAR(255) NULL,
`root_path` VARCHAR(1000) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `projects`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projects` (
`id` INT NOT NULL,
`name` VARCHAR(100) NOT NULL,
`serverprojects_id` INT NOT NULL,
`users_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_projects_serverprojects_idx` (`serverprojects_id` ASC),
INDEX `fk_projects_users1_idx` (`users_id` ASC),
CONSTRAINT `fk_projects_serverprojects`
FOREIGN KEY (`serverprojects_id`)
REFERENCES `serverprojects` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_projects_users1`
FOREIGN KEY (`users_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET FOREIGN_KEY_CHECKS=1;
这产生了以下错误输出
Unbekannter Datentyp: "FK_PROJECTS_SERVERPROJECTS_IDX"
Unknown data type: "FK_PROJECTS_SERVERPROJECTS_IDX"; SQL statement:
-- -----------------------------------------------------
-- Table `projects`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projects` (
`id` INT NOT NULL,
`name` VARCHAR(100) NOT NULL,
`serverprojects_id` INT NOT NULL,
`users_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_projects_serverprojects_idx` (`serverprojects_id` ASC),
INDEX `fk_projects_users1_idx` (`users_id` ASC),
CONSTRAINT `fk_projects_serverprojects`
FOREIGN KEY (`serverprojects_id`)
REFERENCES `serverprojects` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_projects_users1`
FOREIGN KEY (`users_id`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB [50004-193] HY004/50004 (Help)
有人知道这里发生了什么吗?我认为问题出在INDEX
fk\u projects\u serverprojects\u idx
(serverprojects\u id
ASC)的语法中,但我无法实现这一点,我刚刚发现问题在于:
INDEX `fk_projects_serverprojects_idx` (`serverprojects_id` ASC),
INDEX `fk_projects_users1_idx` (`users_id` ASC),
与InnoDB结合使用。使用InnoCb,您不允许这样做。我不使用MySQL,但我发现任何RDBMS都会允许您在字段创建之前对其进行索引,这让我感到惊讶。