【问题标题】:MySQL - #1215 - Cannot add foreign key constraintMySQL - #1215 - 无法添加外键约束
【发布时间】:2015-02-04 02:41:10
【问题描述】:

MySQL 对我来说是新事物。我通常使用 Oracle 数据库。我必须将一个小数据库从 Oracle 10g 转换为 MySQL 语法才能使用 phpMyAdmin。

我尝试了所有方法,但在我的代码中没有发现任何问题。我有这两个表,它们只是不会与外键挂钩。

CREATE TABLE Supplier
(
   ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
   Company_name        VARCHAR (100) ,
   Company_address     VARCHAR (100) ,
   Bank_account        VARCHAR (100) ,
   CONSTRAINT PK_Supplier PRIMARY KEY (ID) 
) ;

CREATE TABLE Meat
(
   ID INT UNSIGNED NOT NULL AUTO_INCREMENT , 
   Initial_weight      VARCHAR (50) ,
   Actual_weight       VARCHAR (50) ,
   Date_of_delivery    DATETIME ,
   Durability          DATETIME ,
   Supplier_ID         DECIMAL(38) NOT NULL ,
   CONSTRAINT PK_Meat PRIMARY KEY (ID) ,
   FOREIGN KEY (Supplier_ID) REFERENCES Supplier(ID) 
) ;

MySQL 查询以错误代码结束:#1215 - 无法添加外键约束

有人看到这两张表有问题吗?

【问题讨论】:

  • Dodavatel提供表定义
  • 对不起,我的错误。当然应该有Supplier 而不是Dodavatel。我正在将代码从捷克语翻译成英语,但我忘了翻译最后一行的最后一部分。现在实际上是代码..当然仍然无法正常工作..

标签: mysql sql database phpmyadmin foreign-keys


【解决方案1】:

Supplier_ID 列有DECIMAL 类型,而Supplier 表中的IDINT UNSIGNED

改成这样:

CREATE TABLE Supplier
(
   ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,
   Company_name        VARCHAR (100) ,
   Company_address     VARCHAR (100) ,
   Bank_account        VARCHAR (100) ,
   CONSTRAINT PK_Supplier PRIMARY KEY (ID) 
) ;

CREATE TABLE Meat
(
   ID INT UNSIGNED NOT NULL AUTO_INCREMENT , 
   Initial_weight      VARCHAR (50) ,
   Actual_weight       VARCHAR (50) ,
   Date_of_delivery    DATETIME ,
   Durability          DATETIME ,
   Supplier_ID         INT UNSIGNED NOT NULL ,
   CONSTRAINT PK_Meat PRIMARY KEY (ID) ,
   FOREIGN KEY (Supplier_ID) REFERENCES Supplier(ID)
) ;

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2015-01-24
    • 2013-06-02
    • 2013-09-26
    相关资源
    最近更新 更多