为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下错误

mysql> CREATE TABLE TB3(
    -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    -> pname varchar(20) NOT NULL
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE TB4(
    -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    -> username VARCHAR(20) NOT NULL,
    -> pid SMALLINT UNSIGNED,
    -> FOREIGN KEY(pid) REFERENCES TB3 (id)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT TB1(pname) VALUES('A');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT TB1(pname) VALUES('B');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT TB1(pname) VALUES('X');
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM TB1;
+----+-------+
| id | pname |
+----+-------+
|  1 | A     |
|  2 | B     |
|  3 | X     |
+----+-------+
3 rows in set (0.00 sec)

mysql> INSERT TB2(username,pid) VALUES('LOIS',1)
    -> ;
ERROR 1146 (42S02): Table 'test.tb2' doesn't exist
mysql> INSERT TB4(username,pid) VALUES('LOIS',1)
    -> ;
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`tb4`, CONSTRAINT `tb4_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `tb3` (`id`))


为什么会报错啊??求助各位大神

正在回答

1 回答

https://img1.sycdn.imooc.com//5d27e1c10001b37b03920061.jpg

这里的报错意思是你目前使用的数据库test下没有tb2这张表,你可以用show tables;查看下当前数据库下是否存在这个表;

第二个报错:tb4表中的pid字段存在外键,参照的是tb3表中的id字段,也就是说你在tb4中插入记录时,pid的值必须在tb3中存在对应的值(id字段的值);所以这里你应该先在创建好的tb3表中插入一条记录并且确保id为1,这样才能成功执行INSERT TB4(username,pid) VALUES('LOIS',1)

1 回复 有任何疑惑可以回复我~
#1

qq_慕妹351815 提问者

懂啦。谢谢您
2019-07-15 回复 有任何疑惑可以回复我~
#2

qq_慕妹351815 提问者 回复 qq_慕妹351815 提问者

感谢好心的大神>o<
2019-07-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

请教一下错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信