Mysql语句1452报错、1451报错、1366报错问题

Mysql语句1452报错、1451报错、1366报错问题编写数据库代码发现一直出错 简单做个记录吧 这是 1452 报错 1452 Cannot add or update a child row a foreign key constraint fails teaching sc CONSTRAINT fk sc sno foreign key studentno references

大家好,我是讯享网,很高兴认识大家。

编写数据库代码发现一直出错,简单做个记录吧

这是1452报错


讯享网

1452-Cannot add or update a child row:a foreign key constraint fails (teaching.sc,CONSTRAINT,fk_sc_sno foreign key(studentno) references student(studentno))

刚开始我是先未插入数据然后创建的外键,结果插入数据发现报错

此时sc表未插入数据;

这是主表student数据 

 这是sc表插入的数据

 

哈哈哈哈后来发现出错的原因是因为我将字段值插入错误,如上图所示的sc表中studentno的字段值‘0’ ,student表字段值是‘0’

于是我将字段值纠正后,运行成功。

 

sc表

上图代码如下:

create table sc(-- 学生成绩表 studentno varchar(10) not null,-- 不为空 courseno varchar(10) not null,-- 不为空 final double(4,2),-- 成绩保留小数点后两位 sname varchar(10), primary key(studentno,courseno)-- 设置学号和课程号为主键 ); 

讯享网

外键代码(我选择的是在建表后建立外键约束):

讯享网alter table sc add CONSTRAINT fk_sc_sno foreign key(studentno) references student(studentno); -- 主表是student 外键名称是fk_sc_sno alter table sc add CONSTRAINT fk_sc_cno foreign key(courseno) references course(courseno); -- 主表是courseno 外键名称是fk_sc_cno

插入字段的代码: 

insert into sc(studentno,courseno,final,sname) values ('0','c05109',91,'韩吟秋'), ('0','c06108',95,'韩吟秋'), ('0','c06127',67,'韩吟秋'), ('0','c05103',69,'宿致远'), ('0','c05127',86,'宿致远'), ('0','c05103',77,'崔志坚'), ('0','c05109',79,'崔志坚'), ('0','c05127',87,'崔志坚'), ('0','c06108',82,'崔志坚'), ('0','c05109',92,'赵毓'), ('0','c08106',95,'赵毓'), ('0','c08123',89,'赵毓');

错误原因:插入外键的字段值在链接表中匹配不到对应字段值,所以报错

注意:在添加外键时,一定要先创建主表再创建从表,先添加主表数据再添加从表数据否则数据添加不上就会报错,如下图所示:

还有我自己报1451错误

 是因为有了外键约束无法执行删除,必须先将从表相关的外键数据删除才能删除主表的错误

1366报错(1366 - Incorrect string value: '\xE8\xAE\xA1\xE7\xAE\x97...' for column 'cname'

at row 1)

这个问题因为自己参照大佬已经解决了,所以无法找到相关的图,直接上解决方法http://blog.csdn.net/you_you0329http://blog.csdn.net/you_you0329

但是我做完这一步还是发现自己问题没有彻底解决,才发现是自己的配置问题

解决方法:

1.先去自己mysql的文件下创建一个my.ini文档文件(我这里之前下载时候就有)

 2.设置mysql的安装目录 这块换成自己解压的路径,因为我解压后直接放在我自己创建的根目录下的mysql文件,但是你要换成你自己的路径(我是个错误解压例子)。最好是这样的D:\\mysql\\mysql-5.7.13-winx64(找到mysql解压目录→新建文本文档 my.txt→输入以下内容→点击左上方菜单→点文件→另存为→保存类型:所有文件,文件名:my.ini)

讯享网[client] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 这块换成自己解压的路径 basedir=D:\Mysql # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB 

两种方式试过,基本问题就解决了。

本人的错题本哈哈哈哈哈。希望能帮到你们哦!

小讯
上一篇 2025-01-19 22:51
下一篇 2025-02-15 23:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/118060.html