gpt4 book ai didi

mysql - 添加引用时出现 SQL 错误

转载 作者:行者123 更新时间:2023-11-29 20:18:16 25 4
gpt4 key购买 nike

在我的 MySQL 数据库中,我有两个表:

CREATE TABLE orders (
id BIGINT AUTO_INCREMENT,
user_id BIGINT DEFAULT 1 NOT NULL,
price DECIMAL(18, 2) NOT NULL,
name VARCHAR(255) NOT NULL,
surname VARCHAR(255) NOT NULL,
[...]
is_fulfilled TINYINT(1) DEFAULT '0' NOT NULL,
INDEX user_id_idx (user_id),
PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = INNODB;

CREATE TABLE user (
id INT AUTO_INCREMENT,
username VARCHAR(128) NOT NULL UNIQUE,
email VARCHAR(128) NOT NULL UNIQUE,
[...]
INDEX name_idx_idx (username),
PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = INNODB;

当我尝试建立关系时

ALTER TABLE orders ADD CONSTRAINT orders_user_id_user_id FOREIGN KEY (user_id) REFERENCES user(id);

我收到此错误

#1005 - Can't create table 'druk.#sql-b38_173' (errno: 150)

该表有问题还是什么?

最佳答案

这是一个非常奇怪的错误,似乎与当前形式的表无关。因此,您需要正确地重新创建表。

但是,您确实遇到了问题。 orders.user_id 列的类型与 user.id 的类型不匹配。您应该将其更改为:

user_id INT DEFAULT 1 NOT NULL, 

Here是一个 SQL Fidde。

我应该补充一点,将值默认为“1”似乎很奇怪。

关于mysql - 添加引用时出现 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com