2016-04-04 109 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

[無法重複](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; 
刪除

嘗試在創建表之前指定它以防引擎wo ULD(古怪)儘量users之前創建表offers

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

最後,如果沒有解決它,在收到錯誤後做到這一點,它會給你更多的信息

SHOW ENGINE INNODB STATUS; 
相關問題