hadoop mysql中文乱码_hadoop:mysql中出现中文乱码问题解决方案

在尝试从Hadoop导入数据到MySQL时遇到了中文乱码错误,具体表现为使用source命令导入.sql文件时,列名'username'的值显示为乱码。问题在于操作系统的默认编码GBK与MySQL的服务器字符集UTF8不匹配。解决方法是修改MySQL配置文件my.ini,将[client]部分的default-character-set改为gbk,将[mysqld]部分的character-set-server改为utf8,然后重启MySQL服务,成功解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错:出现的问题: mysql> use school;

database changed

-> source e:\student.sql; ERROR 1366 (HY000): Incorrect string value: '\xB9\xD8\xD3\xF0' for column 'username' at row 1

具体操作及修改:

1)首先创建要读入的数据

Windows环境

首先创建数据库"school",使用下面命令进行:

create database school;

0818b9ca8b590ca3270a3433284dd417.png

然后通过以下几句话,把我们事先准备好的sql语句(student.sql事先放到了D盘目录)导入到刚创建的"school"数据库中。用到的命令如下:

use school;

source d:\student.sql

"student.sql"中的内容如下所示:

DROP TABLE IF EXISTS `school`.`student`;

CREATE TABLE `school`.`student` (

`id` int(11) NOT NULL default '0',

`name` varchar(20) default NULL,

`sex` varchar(10) default NULL,

`age` int(10) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES ('201201', '张三', '男', '21');

INSERT INTO `student` VALUES ('201202', '李四', '男', '22');

INSERT INTO `student` VALUES ('201203', '王五', '女', '20');

INSERT INTO `student` VALUES ('201204', '赵六', '男', '21');

INSERT INTO `student` VALUES ('201205', '小红', '女', '19');

INSERT INTO `student` VALUES ('201206', '小明', '男', '22');

执行结果如下所示:

0818b9ca8b590ca3270a3433284dd417.png

查询刚才创建的数据库表"student"的内容。

0818b9ca8b590ca3270a3433284dd417.png

结果发现显示是乱码,记得我当时是设置的UTF-8,怎么就出现乱码了呢?其实我们使用的操作系统的系统为中文,且它的默认编码是gbk,而MySQL的编码有两种,它们分别是:

【client】:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。

【mysqld】:服务器字符集,默认情况下所采用的。

找到安装MySQL目录,比如我们的安装目录为:

E:\HadoopWorkPlat\MySQL Server 5.5

从中找到"my.ini"配置文件,最终发现my.ini里的2个character_set把client改成gbk,把server改成utf8就可以了。

【client】端:

[client]

port=3306

[mysql]

default-character-set=gbk

【mysqld】端:

[mysqld]

# The default character set that will be used when a new schema or table is

# created and no character set is defined

character-set-server=utf8

按照上面修改完之后,重启MySQL服务。

0818b9ca8b590ca3270a3433284dd417.png

此时在Windows下面的数据库表已经准备完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值