linux下部署mysql5解决中文问题

本文介绍了解决Linux环境下MySQL数据库无法正确处理中文字符的问题。通过调整MySQL的字符集为UTF-8,确保了含有中文的脚本能够成功导入数据库,并使中文数据能正常插入。

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

        以下是本人在linux下部署myslq5数据库问题: 

        一、包含中文字符的脚本无法通过mysql客户端导入到mysql数据库。

        二、包含中文字符的表数据内容无法插入到mysql数据库。

解决方法:将字符集改为utf8

 

登录mysql客户端输入

 

mysql> SHOW CHARACTER SET;

 

用SHOW CHARACTER SET查看所安装的字符集。如下:

 

+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| dec8     | DEC West European           | dec8_swedish_ci     |      1 | 
| cp850    | DOS West European           | cp850_general_ci    |      1 | 
| hp8      | HP West European            | hp8_english_ci      |      1 | 
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 | 
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 | 
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 | 
| swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 | 
| ascii    | US ASCII                    | ascii_general_ci    |      1 | 
| hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 | 
| koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 | 
| greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 | 
| cp1250   | Windows Central European    | cp1250_general_ci   |      1 | 
| latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 | 
| armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 | 
| utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 | 
| cp866    | DOS Russian                 | cp866_general_ci    |      1 | 
| keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 | 
| macce    | Mac Central European        | macce_general_ci    |      1 | 
| macroman | Mac West European           | macroman_general_ci |      1 | 
| cp852    | DOS Central European        | cp852_general_ci    |      1 | 
| latin7   | ISO 8859-13 Baltic          | latin7_general_ci   |      1 | 
| cp1251   | Windows Cyrillic            | cp1251_general_ci   |      1 | 
| cp1256   | Windows Arabic              | cp1256_general_ci   |      1 | 
| cp1257   | Windows Baltic              | cp1257_general_ci   |      1 | 
| binary   | Binary pseudo charset       | binary              |      1 | 
| geostd8  | GEOSTD8 Georgian            | geostd8_general_ci  |      1 | 
+----------+-----------------------------+---------------------+--------+

 因为没有安装到gb2312所以本人都用utf8来解决。

用命令

[root@GMCC ~]# mysql --help

 

查看到mysql启动读取的配置文件为:

 

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf /usr/local/etc/my.cnf 

 

 于是编辑/etc/my.cnf 

 

找到客户端配置[client] 在下面添加
default-character-
set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-
set=utf8 默认字符集为utf8
init_connect
='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql 即可,查询一下show variables like 'character%'
;

登录mysql,输入

show variables like 'character%';

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

 

修改完毕,重启一下mysql。

命令如下:

 

[root@GMCC ~]# mysqladmin -uroot  shutdown
[root@GMCC ~]# mysqld_safe &
或者
    [root@GMCC ~]# /etc/init.d/mysql restart

关键是脚本修改:

现在已建立mydata1 数据的脚本为例,将脚本修改为:

drop database if exists mydata1 ;
CREATE DATABASE IF NOT EXISTS mydata1 default charset utf8 COLLATE utf8_general_ci;
use mydata1 ;
SET CHARACTER SET utf8;
SET collation_connection = utf8_general_ci;

 

因为本人在windows xp上通过ssh登录linux,所以用UltraEdit-32打开脚本,然后“文件”-->“转换”-->“ASC2转UTF-8(Unicode编辑”。

将文件上传到linux服务器上,然后登陆mysql客户端。

输入:

 

mysql> source /opt/create.sql

那样就将含有中文的脚本导入了数据库里。

 

 

附录:MySql 各级字符集的查询方法

  • 服务器级

    SHOW CHARACTER SET;可查出可供使用的所有字符集。
    SHOW VARIABLES LIKE 'character_set';可查出服务器的默认字符集。
  • status在默认是可以看系统级的字符设置。
    在转到特定数据库下使用,可以查看此数据库的字符设置。

  • 可查出数据库级的字符集。

    SHOW CREATE DATABASE db_name;
  • 两条命令可查出数据表的字符集。

    SHOW CREATE TABLE table_name;
    SHOW TABLE STATUS LIKE 'table_name';
  • 以下几命令可查出数据列的字符集:

    DESCRIBE table_name;
    SHOW COLUMNS FROM table_name;
    SHOW CREATE TABLE table_name;
  • 用CHARSET()函数可确定特定字符串,字符串表达式或数据列值相关联的字符串的字符集。如:SELECT CHARSET(str)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值