我正在尝试在 MySQL 中创建两个表,并通过用户 ID (uid) 和帖子 ID (pid) 将它们链接在一起。 users 表有一个自动递增的主键 uid,posts 表有一个主键 pid。 posts 表的外键是 posts 表的 uid。由于某种原因,当 posts 表的 uid 列应该指向 users 表的 uid 值时,它始终为 0。
CREATE TABLE users
(
uid int NOT NULL AUTO_INCREMENT,
email varchar(100) NOT NULL,
username varchar(100) NOT NULL,
dob varchar(10) NOT NULL,
password varchar(100) NOT NULL,
PRIMARY KEY (uid)
);
CREATE TABLE posts
(
pid int NOT NULL AUTO_INCREMENT,
uid int NOT NULL,
username varchar(100) NOT NULL,
date date NOT NULL,
title varchar(225) NOT NULL,
content mediumtext NOT NULL,
PRIMARY KEY(pid),
FOREIGN KEY(uid) REFERENCES users(uid)
);
两个表的输出为:
mysql> select *from users;
+-----+----------------+-------------+------------+----------+
| uid | email | username | dob | password |
+-----+----------------+-------------+------------+----------+
| 1 | test@test.com | Test User1 | 11/11/1111 | passwor1 |
| 2 | test2@test.com | Test User2 | 22/22/2222 | passwor2 |
| 3 | test3@test.com | Test User 3 | 33/33/3333 | passwor3 |
+-----+----------------+-------------+------------+----------+
3 rows in set (0.00 sec)
mysql> select *from posts;
+-----+-----+-------------+------------+----------------+--------------------------------------------------+
| pid | uid | username | date | title | content |
+-----+-----+-------------+------------+----------------+--------------------------------------------------+
| 1 | 0 | Test User 3 | 2014-08-08 | Test Post | TEST
| 2 | 0 | Test User 3 | 2014-08-08 | Test Post 2 | Test post please ignore
| 3 | 0 | Test User 3 | 2014-08-08 | TEST AGAIn | Test test test test test
+-----+-----+-------------+------------+----------------+--------------------------------------------------+
3 rows in set (0.00 sec)
根据上面的数据,uid 列应为“3”,这是用户表中定义的测试用户 3 的 uid。相反,uid 列始终为 0。
有什么想法吗?
谢谢。
最佳答案
您的 INSERT 语句必须包含您的外键。
如果该帖子与用户 1 有关系,您的插入语句将如下所示:
INSERT INTO posts (uid, username, date, title, content) VALUES(1,'test','2014-08-01','title','content');
关于MySQL:外键始终为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208940/