以下是本人在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 &关键是脚本修改:
现在已建立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)。
本文介绍了解决Linux环境下MySQL数据库无法正确处理中文字符的问题。通过调整MySQL的字符集为UTF-8,确保了含有中文的脚本能够成功导入数据库,并使中文数据能正常插入。
2298

被折叠的 条评论
为什么被折叠?



