在我的MySQL数据库中,我有两个表:
<select>
@foreach (var item in Model.SexualOrientationList)
{
<option title='@item.SNOMED' value="@item.MasterID">@item.CodeDescription</option>
}
</select>
和
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);
表中有什么问题或者是什么?
答案 0 :(得分:0)
这是一个非常奇怪的错误,似乎与您当前表单中的表无关。因此,您需要正确地重新创建表。
但是,确实有问题。列orders.user_id
的类型与user.id
的类型不匹配。你应该把它改成:
user_id INT DEFAULT 1 NOT NULL,
Here是一个SQL Fidde。
我应该补充一下,将值默认为&#34; 1&#34;看起来很奇怪。
答案 1 :(得分:0)
确保两个字段都匹配该类型。将orders.user_id
更改为INT或将user.id
更改为BIGINT
。将orders.user_id
替换为INT
似乎更合理,除非您期望数百万用户......