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

目录
  • 前言
  • 原因:
  • 具体解决方法:
    • 创建数据库时设置字符集为utf8
    • 修改数据库配置文件(比较麻烦)
  • 总结

前言

我们使用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插入不了中文数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql中插入表数据中文乱码问题的解决方法

    一.问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' at row 1 二.分析 1.我先去查了两个数据库表中此字段对应的类型都是 varchar,所以不存在类型不一致导致插入报错的问题. 2. 排除字段类型不一致导致的错误后,我猜测是中文乱码问题,然后插入纯英文数据发现没有报错,所以确定了是中文乱码问题.然后网上百度发现是mysql默认的编码问题导致

  • 教你一招永久解决mysql插入中文失败问题

    前言 问题描述: Incorrect string value:'\xD5\xC5\xC8\xFD' for column 'name' at row 1; 本文是采用修改配置文件,也就几分钟搞定,修改前请备份~~ 有的小伙伴在mysql中插入中文会报错,那么我们要指定字符集. 使用一个命令可以查看当前数据的字符集~(没有修改的时候是拉丁文) show variables like '%character%'; 我们可以有临时解决方案,和永久解决的方案,这里我们只说永久解决的方案: 想要支持中文

  • mysql 不能插入中文问题

    问题现象: 当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 问题原因: Db characterset的字符集设成了latin1 解决方案: 修改mysql 安装目录下的 my.ini 文件为 default-character-set=utf8 character-set-server=utf8 然后mysql服务,重新创建一个数据库.

  • MySQL插入中文不乱码的5种方法

    方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql> set names latin1; mysql> source test.sql; 方法二: 在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件 [root@localhost ~]# cat test.sql set names latin1; insert *****************; mysql> source test.sq

  • Mysql插入中文变为全问号???的问题 解决方法

    1.检查并修改mysql的my.ini的配置文件 复制代码 代码如下: default-character-set=utf8 2.建立数据库是要指定字符集 复制代码 代码如下: create database mydb default character set utf8 collate utf8_general_ci; 3.建立数据表示也要指定字符集:出问题的命令: 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `mydb` (   `username` varc

  • 教你如何6秒钟往MySQL插入100万条数据的实现

    一.思路 往MySQL中插入1000000条数据只花了6秒钟! 关键点: 1.使用PreparedStatement对象 2.rewriteBatchedStatements=true 开启批量插入,插入只执行一次,所有插入比较快. 二. 代码 package test0823.demo1; import java.sql.*; /** * @author : Bei-Zhen * @date : 2020-08-24 0:43 */ public class JDBC2 { //static

  • Mysql 报Row size too large 65535 的原因及解决方法

    报错信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535 向mysql的表插件一个字段 类型为text时,或修改一个字段类型为text时,报出上面的错误.其实我对这个错误的原因理解也不是很深,给出一些我查到的解释吧 大意是数据表中有一个设定长度为64K的字段索引,当表中字段(不知道是字段名字还是什么)不能超过这个长度,65,535所说明的是针对的是整个表的

  • MySQL命令行界面中出现字符错误提示的原因及解决方法

    ERROR 2019 (HY000): Can't initialize character set gb2312 搞了好半天,MySQL都重装了两次,号悲剧... 之前设置了系统编码全都是UTF-8了的 vi /etc/sysconfig/i18n LANG=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8:zh_CN.GB2312:zh_CN SUPPORTED=zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en SYSFONT=lat0-su

  • MySQL 查询速度慢与性能差的原因与解决方法

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS: 是 TransactionsPerSecond的缩写,也就是事务数/秒.它是软件测试结果的测量单位.客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数. Tips: 最好不要在主库上数据库备

  • java向mysql插入数据乱码问题的解决方法

    遇到java向mysql插入数据乱码问题,如何解决? MySQL默认编码是latin1 mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | la

  • Python MySQLdb 使用utf-8 编码插入中文数据问题

    最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的程序. 使用环境: Python 2.5 for Windows MySQLdb 1.2.2 for Python 2.5 MySQL 4.1.22 在写程序中遇到了些怪的故障. 第一个问题:插入中文失败 这个是由于字符编码问题引起的.MySQL安装时我已经设置为utf8编码,表也是使用utf8编码建立.程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了conn=MyS

  • 详解MySQL插入和查询数据的相关命令及语句使用

    插入数据 MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如果数据是字符型,必须使用单引号或者双引号,如:"value

  • MySql插入数据成功但是报[Err] 1055错误的解决方案

    1.问题: 这两天做insert操作,mysql版本是5.7,insert后虽然成功了,但是会报一个[Err] 1055的错误.具体如下: 2.解决方案: linux环境下,vim到my.cnf,添加如下语句: sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 最后保存退出,重启mysql 3.测试 看一下是否解决 可以看到已经没有error了. 总结 以上所述是小编给大家介绍的MySql插入数据成功但是报[Err] 1055错误的解决方案,

  • cmd中MySQL中文数据乱码问题解决方法

    我的MySQL是默认utf8编码的,所建数据库也是设置utf8编码,使用程序可以新增中文数据,在cmd中使用SQL语句新增数据则报类似Incorrect string value: '\xB2\xE2\xCA\xD4' for column 'title' at row 1错误,而使用SQL语句查询出之前程序所新增中文数据都是乱码的. 右击在cmd界面上面边框→属性→选项 ,查看cmd的编码方式是是GBK,并不是utf-8. 其实数据库内部是没有乱码的,只是和cmd的编码方式不一样,在cmd呈现

随机推荐