fk引用上的未知数据类型

时间:2017-04-11 10:53:55

标签: mysql sql h2

我正在尝试在H2数据库中运行这个mysql命令。 DB设置为mysql模式。

-- -----------------------------------------------------
-- 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_projects_serverprojects_idxserverprojects_id ASC)的语法中,但我无法使其工作

1 个答案:

答案 0 :(得分:0)

我刚刚发现问题是这样的:

INDEX `fk_projects_serverprojects_idx` (`serverprojects_id` ASC), 
  INDEX `fk_projects_users1_idx` (`users_id` ASC), 

与InnoDB结合使用。使用InnoCb,您无法做到这一点。

相关问题