2016-04-04 48 views
1

ここで間違っていることを確認するには、目が新鮮なペアが必要です。同じ問題を抱えている他の人々からMysqlエラー:1215外部キー制約を追加できません[外部キーと同じタイプ、innodb]

CREATE TABLE IF NOT EXISTS `spring_normalize`.`users` (
    `username` VARCHAR(60) NOT NULL, 
    `password` VARCHAR(80) NULL, 
    `authority` VARCHAR(45) NULL, 
    `name` VARCHAR(100) NULL, 
    `enabled` TINYINT(1) NULL, 
    `email` VARCHAR(60) NULL, 
PRIMARY KEY (`username`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `spring_normalize`.`offers` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `text` VARCHAR(100) NULL, 
    `users_username` VARCHAR(60) NOT NULL, 
PRIMARY KEY (`id`, `users_username`), 
INDEX `fk_offers_users_idx` (`users_username` ASC), 
CONSTRAINT `fk_offers_users` 
    FOREIGN KEY (`users_username`) 
    REFERENCES `spring_normalize`.`users` (`username`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

  1. は、DBのInnoDBですか?はい
  2. すべてのテーブルがInnoDBですか?はい
  3. 参照テーブルにユニークなインデックスがありますか?はい
  4. 参照されて参照する列は、まったく同じ型ですか?はい

質問どうすれば間違っているのですか?前もって感謝します!

+0

を与えます[Can not repeat(http://sqlfiddle.com/#!2/d2f001)]は、作成されたspring_normalizeデータベースと完全なデータベース名でローカルに試しました。存在しない場合にのみ作成するため、以前の別の形式のテーブルは存在しませんか? –

+1

コード - データベース名を除いたコード - SQL Fiddle:http://www.sqlfiddle.com/#!9/d2f00で問題なく動作します。 –

+0

問題は再現できません。間違っています。それはMariaDB 10にも取り組んでいます。エラーは別のスクリプトからのものです。 – DanFromGermany

答えて

0

他の人がコメントで述べたように、あなたのクエリはあなたが試すことができ、物事の

カップル正しい:


最初のデータベースを選択し、2 create table

USE `spring_normalize`; 


CREATE TABLE IF NOT EXISTS `users` (
    `username` VARCHAR(60) NOT NULL, 
    `password` VARCHAR(80) NULL, 
    `authority` VARCHAR(45) NULL, 
    `name` VARCHAR(100) NULL, 
    `enabled` TINYINT(1) NULL, 
    `email` VARCHAR(60) NULL, 
PRIMARY KEY (`username`)) 
ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `offers` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `text` VARCHAR(100) NULL, 
    `users_username` VARCHAR(60) NOT NULL, 
PRIMARY KEY (`id`, `users_username`), 
INDEX `fk_offers_users_idx` (`users_username` ASC), 
CONSTRAINT `fk_offers_users` 
    FOREIGN KEY (`users_username`) 
    REFERENCES `users` (`username`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
から削除

エンジンを使用する場合にテーブルを作成する前にこれを指定してくださいULD(不気味)users前にテーブルoffersを作成しよう:

-- Do not check foreign key constraints 
SET FOREIGN_KEY_CHECKS = 0; 

、最終的に何がそれを解決しない場合は、エラーを受信した後、これを行う、それはあなたの詳細

SHOW ENGINE INNODB STATUS; 
関連する問題