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“外键约束的格式不正确”)
也许您可以尝试更改创建表的顺序?尝试创建第一个用户,然后创建订单
- table 的创建顺序很重要 - 您不能引用未创建的 table。所以先创建
Users
然后 Orders
.
- 您的引用列数据类型不兼容 -
Users.UserID
定义为 Varchar(255)
,而 Orders.User_id
定义为 Int(255)
。您必须在两个 table 中设置相同的数据类型。对于 id
列,INT
数据类型似乎是最合理的。
PS。 Int(255)
不安全,INTEGER 数据类型不能存储 255 位数字。并且无论如何都会忽略指定的长度。此外,它已被弃用,因此请完全删除它。
亲爱的 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“外键约束的格式不正确”)
也许您可以尝试更改创建表的顺序?尝试创建第一个用户,然后创建订单
- table 的创建顺序很重要 - 您不能引用未创建的 table。所以先创建
Users
然后Orders
. - 您的引用列数据类型不兼容 -
Users.UserID
定义为Varchar(255)
,而Orders.User_id
定义为Int(255)
。您必须在两个 table 中设置相同的数据类型。对于id
列,INT
数据类型似乎是最合理的。
PS。 Int(255)
不安全,INTEGER 数据类型不能存储 255 位数字。并且无论如何都会忽略指定的长度。此外,它已被弃用,因此请完全删除它。