2016-07-30 9 views
0

私はproducts_typescategoriessubcategoriesテーブルを持っているデータベースを作成するためにmysql_workbenchを使用しています。 category_idおよびsubcategory_idはそれぞれcategoriesおよびsubcategoriesテーブルを参照する外部キーです。ときときworkbenchからmysql database on phpMyAdminにI forward engineerこのモデルは、これはエラーと一緒に正確なコードであるSQLの外部キーのテーブルの重複キー

Can't write; duplicate key in table 'product_types' 

としてエラーが発生します。

Executing SQL script in server 
ERROR: Error 1022: Can't write; duplicate key in table 'product_types' 
SQL Code: 
     -- ----------------------------------------------------- 
     -- Table `argo_project_01_2`.`product_types` 
     -- ----------------------------------------------------- 
     CREATE TABLE IF NOT EXISTS `argo_project_01_2`.`product_types` (
      `id` INT NOT NULL, 
      `category_id` INT NULL, 
      `subcategory_id` INT NULL, 
      `title` VARCHAR(100) NULL, 
      `description` TEXT NULL, 
      `status` INT NULL DEFAULT 0, 
      `created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, 
      `modified` TIMESTAMP NULL, 
      PRIMARY KEY (`id`), 
      INDEX `category_id_idx` (`category_id` ASC), 
      INDEX `subcategory_id_idx` (`subcategory_id` ASC), 
      CONSTRAINT `category_id` 
      FOREIGN KEY (`category_id`) 
      REFERENCES `argo_project_01_2`.`categories` (`id`) 
      ON DELETE NO ACTION 
      ON UPDATE NO ACTION, 
      CONSTRAINT `subcategory_id` 
      FOREIGN KEY (`subcategory_id`) 
      REFERENCES `argo_project_01_2`.`subcategories` (`id`) 
      ON DELETE NO ACTION 
      ON UPDATE NO ACTION) 
     ENGINE = InnoDB 

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

Fetching back view definitions in final form. 
Nothing to fetch 

クエリで何が間違っていますか?

+0

これはすべてあなたがやっていることですか?あなたがデータを追加しようとする前にそれは爆破する? product_typesという名前のテーブルがまだありません。 – Jonny

+0

いいえ私は 'product_types'テーブルを持っていませんが、' categories'と 'subcategories'が存在します –

+0

あなたは外部キーとは違うcontraints(both)の名前を変更しようとしましたか? – jonju

答えて

0

制約名 "category_id"と "subcategory_id"をたとえば "fk_category_id"と "fk_subcategory_id"に変更すると問題が解決すると考えられます。

編集: また、外部キーが自動的にインデックスを生成するため、「category_id_idx」および「subcategory_id_idx」インデックスを削除できます。

+0

'制約名 'の使い方は? –

+0

@AnujTBE外部キー制約を作成するときに、その名前を指定することができます。その名前を列名とは異なる値に変更します –