MySQL:外键始终为0

标签 mysql sql

我正在尝试在 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/

相关文章:

组合/值的mysql分布

sql - 如何从ssis发生错误的点恢复数据迁移?

php - 检查数据库中是否存在 IP(通过 $_SERVER 发送)?

mysql - Group by 不能与 mysql 子句中的 where 一起使用?

php - 组合多个 Mysql 查询

java - 检查数据库中重复记录的最佳方法| hibernate

c# - 将 Linq 表达式转换为 sql server 查询

MySQL 选择使用通配符(但在字段中使用通配符)

mysql - MySQL中模式/数据库之间的区别

c# - 存储过程删除查询不起作用。但是当它自己在编辑器中运行而不调用它时它可以正常工作