2016-05-23 25 views
-1

データベースモデルをmysqlワークベンチからmysqlサーバに移動しようとしています。私はリバースエンジニアのSQLスクリプトを使用していますが、インポートするとエラーが出ます。私は問題をgoogleにしようとしましたが、私のsitutationには運がありません。サーバへのMySQLワークベンチの転送

-- ----------------------------------------------------- 
-- Table `MapLibrary`.`Books` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `MapLibrary`.`Books` ; 

CREATE TABLE IF NOT EXISTS `MapLibrary`.`Books` (
    `ISBN` VARCHAR(13) NOT NULL, 
    `date_of_publication` INT NULL, 
    `book_title` VARCHAR(45) NULL, 
    PRIMARY KEY (`ISBN`)) 
ENGINE = InnoDB; 

-- ----------------------------------------------------- 
-- Table `MapLibrary`.`Genre` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `MapLibrary`.`Genre` ; 

CREATE TABLE IF NOT EXISTS `MapLibrary`.`Genre` (
    `genre_code` INT NOT NULL, 
    `genre_name` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`genre_code`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `MapLibrary`.`Books_By_Genre` 
-- ----------------------------------------------------- 
DROP TABLE IF EXISTS `MapLibrary`.`Books_By_Genre` ; 

CREATE TABLE IF NOT EXISTS `MapLibrary`.`Books_By_Genre` (
    `genre_code` INT NOT NULL, 
    `ISBN` VARCHAR(13) NOT NULL, 
    PRIMARY KEY (`genre_code`, `ISBN`), 
    INDEX `Books_idx` (`ISBN` ASC), 
    CONSTRAINT `Books` 
    FOREIGN KEY (`ISBN`) 
    REFERENCES `MapLibrary`.`Books` (`ISBN`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Genre` 
    FOREIGN KEY (`genre_code`) 
    REFERENCES `MapLibrary`.`Genre` (`genre_code`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

ERROR:

ERROR 1022 (23000) at line 89: Can't write; duplicate key in table 'books_by_genre' 

Operation failed with exitcode 1 
+1

82行目は何を指していますか?私はここで数えることができません:) – compuhosny

+0

今、関係のないテーブルもすべて削除してください。 82行目のテーブルとそれにリンクされたテーブルが必要です。 (または、外部キー制約とそれで参照される2つのテーブル)。簡単なヒントとして、データ型(署名付き/署名なしフラグを含む)を確認してください。 – Pred

+0

@AhmadHosnyそれはテーブルブックの作成を指します –

答えて

1

問題はISBNが参照されるテーブルに独自に一意の識別子ではないということです。

私はBooksテーブルがベーステーブルであり、3つの参照テーブルがM:Nリンクテーブルであると仮定します。これが当てはまる場合、外部キーが間違った方向を指しています。 (接続を別の方向にドラッグしようとしますか?)

+0

IDはすぐに試してみてください。 –

+0

試着についてではありません。 BooksByAuthorテーブルには、BooksテーブルとAuthorテーブルへの参照が必要です。少なくともこれが理にかなっています。私はどのようにGUIでそれを行うのか分からない、私はスクリプトの男です。 – Pred

+0

Books_By ....テーブルがBooksテーブルとPub/Auth/Genrテーブルを指し示すように、foreinキーをスワップしました。今は89行目でERROR 1022(23000)の別のエラーを出しています:書き込めません。 'books_by_genre'テーブルの重複キーexitcode 1で操作が失敗しました...行には次の行が表示されます: 'MapLibrary'.Books_By_Genre' –

関連する問題