SQL 外键格式不正确

SQL foreign keys incorrectly formed

亲爱的 Whosebug 用户,您好,

我正在处理要添加到我的项目中的数据库。 但是我正在努力使用 PHPmyadmin 在 MySQL 中正确建立关系。

我写了以下内容:

CREATE TABLE Orders ( 
    OrderID int(255) NOT NULL, 
    Price decimal(65,2), 
    Order_date DATE,
    UserID Int(255) NOT NULL,
    PRIMARY KEY (OrderID), 
    FOREIGN KEY (UserID) REFERENCES Users(UserID) 
); 
CREATE TABLE Users(
    UserID Varchar(255) NOT NULL,
    Password Varchar(12) NOT NULL,
    PRIMARY KEY(UserID)    
);

但我不断收到错误消息,提示我错误地构建了外键。 我错过了什么吗? PHPmyadmin 是否使用不同的方式来制定查询?

我看到消息来源告诉我使用索引或稍后使用 table 修饰符和索引来分配主键和外键,但这似乎是不必要的额外步骤,除非它确实是唯一的方法它。我的知识还很有限

错误信息:(错误号:150“外键约束的格式不正确”)

也许您可以尝试更改创建表的顺序?尝试创建第一个用户,然后创建订单

  1. table 的创建顺序很重要 - 您不能引用未创建的 table。所以先创建 Users 然后 Orders.
  2. 您的引用列数据类型不兼容 - Users.UserID 定义为 Varchar(255),而 Orders.User_id 定义为 Int(255)。您必须在两个 table 中设置相同的数据类型。对于 id 列,INT 数据类型似乎是最合理的。

PS。 Int(255) 不安全,INTEGER 数据类型不能存储 255 位数字。并且无论如何都会忽略指定的长度。此外,它已被弃用,因此请完全删除它。