web-dev-qa-db-ja.com

エラー1062:キー 'name'の重複したエントリ 'mydb / regimes'

私はデータベースの専門家ではありませんが、mysqlworkbench 8.0.13でデータベースをモデリングしています。スクリプトを実行しようとすると、このテーブル(レジーム)で壊れます。 「名前」の意味がわかりません。このテーブルにはnameというキーはありません。

このテーブルのIDを他の2つのテーブルのFKとして使用しています。そして、両方の関係は1対多です。しかし、私はこれが問題になるべきではないと思います。誰かがこの問題を解決するために私を正しい方向に向けるように親切にしていただけますか?

エラーログ:

Executing SQL script in server
ERROR: Error 1062: Duplicate entry 'mydb/regimes' for key 'name'
SQL Code:
        CREATE TABLE IF NOT EXISTS `mydb`.`regimes` (
          `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
          `description` VARCHAR(255) NOT NULL,
          `created_at` TIMESTAMP NULL DEFAULT NULL,
          `updated_at` TIMESTAMP NULL DEFAULT NULL,
          `deleted_at` TIMESTAMP NULL DEFAULT NULL,
          PRIMARY KEY (`id`))
        ENGINE = InnoDB
        DEFAULT CHARACTER SET = utf8mb4
        COLLATE = utf8mb4_unicode_ci

SQL script execution finished: statements: 49 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

会社テーブル

CREATE TABLE IF NOT EXISTS `mydb`.`vacancies` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `company_id` INT UNSIGNED NOT NULL,
  `manager_id` INT UNSIGNED NOT NULL,
  `regime_id` INT UNSIGNED NOT NULL,
  `vacancy_status_id` INT UNSIGNED NOT NULL,
  `vacancy_type_id` INT UNSIGNED NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `area` VARCHAR(255) NOT NULL,
  `description` TEXT NULL DEFAULT NULL,
  `exam_filename` VARCHAR(255) NULL DEFAULT NULL,
  `workload` VARCHAR(255) NOT NULL,
  `remuneration` VARCHAR(255) NOT NULL,
  `quantity` INT NOT NULL,
  `city` VARCHAR(255) NOT NULL,
  `soft_skills` VARCHAR(500) NOT NULL,
  `level` VARCHAR(255) NOT NULL,
  `specialty` VARCHAR(255) NOT NULL,
  `skills` VARCHAR(2000) NULL DEFAULT NULL,
  `help` TINYINT(1) NOT NULL,
  `created_at` TIMESTAMP NULL DEFAULT NULL,
  `updated_at` TIMESTAMP NULL DEFAULT NULL,
  `deleted_at` TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_vacancies_companies1_idx` (`company_id` ASC) VISIBLE,
  INDEX `fk_vacancies_managers1_idx` (`manager_id` ASC) VISIBLE,
  INDEX `fk_vacancies_vacancy_types1_idx` (`vacancy_type_id` ASC) VISIBLE,
  INDEX `fk_vacancies_vacancy_statuses1_idx` (`vacancy_status_id` ASC) VISIBLE,
  INDEX `fk_vacancies_regimes1_idx` (`regime_id` ASC) VISIBLE,
  CONSTRAINT `fk_vacancies_companies1`
    FOREIGN KEY (`company_id`)
    REFERENCES `mydb`.`companies` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vacancies_managers1`
    FOREIGN KEY (`manager_id`)
    REFERENCES `mydb`.`managers` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vacancies_vacancy_types1`
    FOREIGN KEY (`vacancy_type_id`)
    REFERENCES `mydb`.`vacancy_types` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vacancies_vacancy_statuses1`
    FOREIGN KEY (`vacancy_status_id`)
    REFERENCES `mydb`.`vacancy_statuses` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vacancies_regimes1`
    FOREIGN KEY (`regime_id`)
    REFERENCES `mydb`.`regimes` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

PROFESSIONAL_PROFILES

CREATE TABLE IF NOT EXISTS `mydb`.`professional_profiles` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `talent_id` INT UNSIGNED NOT NULL,
  `regime_id` INT UNSIGNED NOT NULL,
  `vacancy_type_id` INT UNSIGNED NOT NULL,
  `specialty` VARCHAR(255) NOT NULL,
  `level` VARCHAR(255) NOT NULL,
  `available` TINYINT(1) NOT NULL,
  `curriculum_filename` VARCHAR(255) NOT NULL,
  `soft_skills` VARCHAR(500) NOT NULL,
  `relocation` TINYINT(1) NOT NULL,
  `current_company` VARCHAR(255) NULL DEFAULT NULL,
  `current_remuneration` VARCHAR(255) NULL DEFAULT NULL,
  `intended_remuneration` VARCHAR(255) NULL DEFAULT NULL,
  `remote` TINYINT(1) NOT NULL,
  `meeting_start` TIME NOT NULL,
  `meeting_end` TIME NOT NULL,
  `created_at` TIMESTAMP NULL DEFAULT NULL,
  `updated_at` TIMESTAMP NULL DEFAULT NULL,
  `deleted_at` TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_professional_profiles_talents1_idx` (`talent_id` ASC) VISIBLE,
  INDEX `fk_professional_profiles_vacancy_types1_idx` (`vacancy_type_id` ASC) VISIBLE,
  INDEX `fk_professional_profiles_regimes1_idx` (`regime_id` ASC) VISIBLE,
  CONSTRAINT `fk_professional_profiles_talents1`
    FOREIGN KEY (`talent_id`)
    REFERENCES `mydb`.`talents` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_professional_profiles_vacancy_types1`
    FOREIGN KEY (`vacancy_type_id`)
    REFERENCES `mydb`.`vacancy_types` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_professional_profiles_regimes1`
    FOREIGN KEY (`regime_id`)
    REFERENCES `mydb`.`regimes` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
1

Error 1062: Duplicate entry ... は、既存のキーを使用してテーブル内の行を(明示的または暗黙的に)INSERTまたはUPDATEしようとしたことを示すエラーであり、そのキー列は次のように定義されています。テーブル/インデックスで一意であること。これは、主キーまたは一意として明示的に定義された別のキーである可能性があります。ただし、あなたの場合、重複したエントリは同じ名前のインデックスを2回作成しようとした結果だと思います。 (インデックスの定義自体もテーブルに格納されているため、この結論に達しました。また、表示されるエラーは、重複キーの値としてテーブルの名前を参照しています。)

そうは言っても、私はCREATE TABLEregimesのステートメントがこのエラーの原因です。エラーログには49個のステートメントが正常に実行され、1つのステートメントでエラーが発生したことが記録されています。スクリプトで、nameキーを作成するステートメントを探します。あなたがいずれかを持っている - CREATE UNIQUE INDEX name ON regimes ... またはALTER TABLE regimesステートメント?それは気をつけるべきことです。

1
dbdemon