把mysql 中的字符gb2312 改为gbk的方法

第一步:查找mysql的字符:

  mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| 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     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set

我们需要修改标黑的两项,方法如下:

安装完成后也可以运行设置向导的。
X:\%path%MySQLMySQL Server 5.0inMySQLInstanceConfig.exe

可以修改:character_set_server  字符

MySQL数据库字符编码全局设置;可在Navicat for MySQL查询中执行下面语句修改

语句:ALTER DATABASE `数据库名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci

可以修改:character_set_database 字符

2、MySQL数据表字符编码设置;可在Navicat for MySQL查询中执行下面语句修改

语句:ALTER TABLE `表名` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci

3、MySQL数据表字段字符编码设置;(也可在phpmyadmin或Navicat for MySQL中修改

语句:ALTER TABLE `表名` CHANGE `字段名` `字段名` 字段类型(长度) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL

注意:请在执行查询之前,执行:SET NAMES gbk

改完后重启mysql服务,有必要的话重新导入表结构。

在php中查询前先设置:mysql_query("SET NAMES gbk");否则网页还是出现乱码

导入表的方法,(mysqldump用法见前博文):

导出表结构

mysqldump  -hlocalhost -uroot -p123456 --default-character-set=gbk -d student_info > createdb.sql

导出表数据

mysqldump -hlocalhost -uroot -p123456 --quick --no-create-info --extended-insert --default-character-set=gb2312 student_info > data.sql

当mysql使用mysqldump导出数据出错  时的方法:

今天使用mysql的mysqldump进行数据的导出,可是进入mysql后,老是出错,提示为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql> mysqldump -uroot -ppsw onebase > bak.sql' at line 1

一直百思不得其解,意思就是sql语句中包含mysql的内置关键字,看的一头雾水,百度一下,发现原来是使用mysql command line client cmd直接进入后,会于mysqldump.exe冲突,所以,要用CMD到mysql的安装路径的bin目录下,例如:xxxxin>mysqldump -u a 用户 -p密码database > 文件路径xx.sql

ok,可以数据导出了。。

 

 

原文地址:https://www.cnblogs.com/hssbsw/p/3426712.html