MySQL插入不了中文数据问题的原因及解决

 更新时间:2023年05月05日 12:46:04   作者:爱躺平的威威  
最近发现新安装的MySQL数据库不能插入中文字段,所以下面这篇文章主要给大家介绍了关于MySQL插入不了中文数据问题的原因及解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

我们使用MySQL可能会遇到加入中文报错的情况,如下。

报错:非法的字符值 放入 ‘name’    为什么不能存入中文呢?

原因:

对于当前数据库 来说,内部存储中文是需要指定对应的中文编码方式!

而数据库默认的字符集,是“拉丁文”,不能存中文。

我们在控制台输入,下面这行命令,查看数据库字符集。

show variables like '%char%';

我们看  character_set_database 这一行对应 Value的是 latinl,而 latinl 是拉丁文,是不支持中文的。 

现在我们知道数据库为什么不能存储中文了,那应该怎么做才能让数据库插入中文呢?我们接着往下看

具体解决方法:

我主要介绍两种方法,一种简单的,一个比较复杂,但其本质上是在修改 数据库 字符编码

创建数据库时设置字符集为utf8

我们在创建数据库时设置支持中文字符集utf8,如下

create database 数据库名 character set utf8;

设置完后,我们就能想改数据库中插入中文啦。

我们再查看该数据库时,我们会发现我们设置数据库字符集改变了,但是当我们使用其他数据库时,其字符集还是 latinl。

这种方法,虽然简单但是每次都需要手动设置,那有没有一种方法能一劳永逸。

我们看方法二。

修改数据库配置文件(比较麻烦)

我们可以修改MySQL的配置文件,把其字符集修改为utf8,这样再创建数据库就不用手动设置啦。

什么是配置文件:

    很多程序,内部支持多种“模式”,可以调整当前程序,让他应用那种模式。

    因此就可以借助“开关”来切换模式!软件的开关通常会用一个“图形化界面”,但是对于 MySQL 等👩‍💻程序猿👨‍💻专用软件则一般没有对应的图形化界面表示开关。只是通过一个专门的文件,来保存这些开关。这个文件就是 “配置文件”。

     因此程序猿如果要调整这些开关,就要手动修改这个文件。

1、找到MySQL的配置文件

每个人电脑上的配置文件路径不一样,我们可以‘服务’来找到其对于的路径

然后在服务中,找到MySQL,在常规中找到可执行文件路径,复制下来。 

 大家可以像我一样,把路径复制下来放到画图中方便查看。如下图,画红线的就是MySQL配置文件路径,接着我们根据路径去查找配置文件

在查找过程中 大家肯能找不到 ProgramData 文件,一般这个文件都是隐藏起来的,我们点击显示隐藏项目就会出现。

2、修改文件  

找到 后缀为 .ini 文件后,我们可以记事本打开编辑。

注意:

    大家在进行编辑之前,一定要先备份!!!

    这样的文件非常关键,一旦改错了,mysql 就启动不了了!!

如何备份:我们直接选中文件,赋值粘贴即可。

 首先在文件中找到[mysql],在下面添加下面  default-character-set=utf8

注意:=两侧不要有空格

然后找到[mysqld],把 下图话红框的地方改成  character-set-server=utf8 ,改好后退出保存

3、重启MySQL服务器(重要)

MySQL是一个客户端服务器程序,我们要重启MySQL服务器。我们在服务中找到MySQL之后,右键点击重启。重启后MySQL显示‘正在运行’,即重启成功!

注意:重启的是MySQL服务器,不是MySQL客户端

如果启动失败,可能是配置文件出错,大家可以回去检测一下是不是有拼写错误或空格多打的情况

到这里就配置成功了,我们可以去尝试建库插入中文试试

刚才该的配置,影响的是新的库。旧的库,仍然是之前的编码!!! 一定要记得删库,重新建库

总结 

到此这篇关于MySQL插入不了中文数据问题的原因及解决的文章就介绍到这了,更多相关MySQL插入不了中文数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 快速学习MySQL索引的入门超级教程

    快速学习MySQL索引的入门超级教程

    这篇文章主要介绍了快速学习MySQL索引的入门教程,包括索引的创建和删除等基础知识,需要的朋友可以参考下
    2015-11-11
  • 深入理解r2dbc在mysql中的使用

    深入理解r2dbc在mysql中的使用

    这篇文章主要介绍了深入理解r2dbc在mysql中的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • mysql分表程序改动方法

    mysql分表程序改动方法

    在本篇文章里小编给大家分享了关于mysql分表程序改动方法以及相关知识点,需要的朋友们跟着学习下。
    2019-04-04
  • mysql int(3)与int(11)的区别详解

    mysql int(3)与int(11)的区别详解

    这篇文章主要介绍了mysql int(3)与int(11)的区别详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • MySQL如何创建触发器

    MySQL如何创建触发器

    这篇文章主要为大家详细介绍了MySQL如何创建触发器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Mysql5.6修改root密码教程

    Mysql5.6修改root密码教程

    今天小编就为大家分享一篇关于Mysql5.6修改root密码教程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • MySQL监控Innodb信息工作流程

    MySQL监控Innodb信息工作流程

    这篇文章主要为大家介绍了MySQL监控Innodb信息工作流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • MySQL8.0.18配置多主一从

    MySQL8.0.18配置多主一从

    主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,本文详细的介绍了MySQL8.0.18配置多主一从,感兴趣的可以了解一下
    2021-06-06
  • Mysql树形表的2种查询解决方案(递归与自连接)

    Mysql树形表的2种查询解决方案(递归与自连接)

    MySQL作为一个关系型数据库,存储着许多的数据信息,在实际应用中经常会遇到需要存储树形结构数据的情境,例如部门结构、商品分类等,这篇文章主要给大家介绍了关于Mysql树形表的2种查询解决方案,分别是递归与自连接,需要的朋友可以参考下
    2023-11-11
  • mysql found_row()使用详解

    mysql found_row()使用详解

    在参考手册中对found_rows函数的描述是: it is desirable to know how many rows the statement would have returned without the LIMIT. 也就是说,它返回值是如果SQL语句没有加LIMIT的情况下返回的数值。
    2016-05-05

最新评论