一、字符集乱码

1.操作系统字符集

[root@mysql5 ~]# cat /etc/system-release /etc/sysconfig/i18n
CentOS release 6.5 (Final) # 操作系统发行版本
LANG="en_US.UTF-8"      # 语言版本
SYSFONT="latarcyrheb-sun16"

2.设置MySQL客户端

set names utf8;

[mysql]

default-character-set=utf8

3.设置MySQL服务端

[mysqld]
# mysql5.1
default-character-set=utf8
# mysql5.5
character-set-server=utf8

4.库表

create database zwq default character set utf8 collate utf8_general_ci;

5、系统字符集与数据库字符集的关联

[root@mysql5 ~]# cat /etc/sysconfig/i18n ; mysql -e "show variables like 'character_set%';";
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
+--------------------------+----------------------------------+
| Variable_name | Value     |
+--------------------------+----------------------------------+
| character_set_client | utf8 $LANG决定           |
| character_set_connection | utf8 $LANG决定 |
| character_set_database | utf8 属性 character_set_server |
| character_set_filesystem | binary |
| character_set_results | utf8 $LANG决定 |
| character_set_server | utf8 属性 character_set_server |
| character_set_system | utf8 $LANG决定 |
| character_sets_dir | /app/mysql/share/charsets/    |
+--------------------------+-----------------------------------+

/etc/sysconfig/i18n中的LANG变量决定了 character_set_client、character_set_connection、character_set_results、character_set_system

my.cnf配置项

[mysqld]

character_set_server 决定了 character_set_database、character_set_server

character_set_filesystem 决定了 character_set_filesystem

set names utf8 决定了 character_set_client、character_set_connection、character_set_results

--default-character-set=utf8 效果跟set names utf8一样

二、更改已有数据的字符集

-- 1、建库建表的语句导出,sed批量修改为utf8

  mysqldump -uroot -proot --default-character-set=latin1 -d zwq > destructer.sql
-- 2、导出所有数据

  mysqldump -uroot -proot --quick --no-create-info --extended-insert --default-character-set=utf8 db_name >db_name_data.sql 
-- 3、修改mysql客户端和服务端编码为utf8
-- 4、删除原有的库表、数据
-- 5、导入新的建库建表语句
-- 6、导入mysql的所有数据

三、安全的更新操作

为了防止不加where条件的update语句被执行,需要在 /etc/my.cnf 、 ~/.my.cnf 或 --defaults-file 指定的配置文件中加入

[mysql]
safe-updates=TRUE

四、将表移动到另一个库中

-- 方式1
rename table school.student to zwq.student;
-- 方式2
alter table zwq.student rename to school.student;

MySQL 字符集问题及安全的更新操作的更多相关文章

  1. mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  2. python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)

    今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...

  3. 技术分享 | 在MySQL对于批量更新操作的一种优化方式

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 作者:景云丽.卢浩.宋源栋 GreatSQL社区原创内容未经授权不得随意使用,转 ...

  4. MySQL 的更新操作update

    1 更新操作(单表更新) 1)单表更新 update [low_priority] [ignore] table_reference set col_name1={expr1|default},col ...

  5. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  6. Mysql字符集知识总结

    字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...

  7. [MySQL] 字符集的选择

    1. Mysql支持的字符集 MySQL服务器可以支持多种字符集,不同的字段都可以使用不同的字符集. 查看所有可用字符集: show character set; select * from info ...

  8. MySQL字符集编码

    MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并參考了 ...

  9. MySQL字符集设置及字符转换(latin1转utf8)

    MySQL字符集设置及字符转换(latin1转utf8) http://blog.chinaunix.net/uid-25266990-id-3344584.html  MySQL字符集设置及字符转换 ...

随机推荐

  1. windows下python3.6 32bit 安装django

    在Windows下python3.6安装Django1.11.3 1.首先下载地址:https://pypi.python.org/pypi/Django/1.11.3 pip install dja ...

  2. Python入门 - 容器类型

    python的容器有四种:列表List,元祖Tuple,字典Dictionary和集合Set. 一.列表List a = [1, 2, 3, 'a', 'b', 'c'] b = 1.5 a.appe ...

  3. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别

    背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...

  4. ThinkPHP5.0 实现 app支付宝支付功能

    前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...

  5. Android 跨进程启动Activity黑屏(白屏)的三种解决方案

    原文链接:http://www.cnblogs.com/feidu/p/8057012.html 当Android跨进程启动Activity时,过程界面很黑屏(白屏)短暂时间(几百毫秒?).当然从桌面 ...

  6. PHP运算符优先级 运算符分类

    运算符 运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西. 运算符可按照其能接受几个值来分组.一元运算符只能接受一个值,例如 !(逻辑取反运 ...

  7. Loadrunner 中时间戳函数 web_save_timestamp_param(时间返回数值)

    web_save_timestamp_param("tStamp", LAST); lr_output_message("Moon1:%s",lr_eval_s ...

  8. SSH中的免password登录

    1:运行命令  ssh-keygen -t rsa 产生秘钥 ,位于~/.ssh目录下(假设在这期间有什么提示.一路敲击enter下去,什么都不用输入) 2:运行命令 cp  ~/.ssh/id_rs ...

  9. 七、Spring Boot Servlet 使用

    Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet.Filter.Listener.Interceptor 等等. 当使用spring-Boot时,嵌 ...

  10. CentOS6.5安装MySQL5.6

    CentOS6.5安装MySQL5.6,开放防火墙3306端口,允许其他主机使用root账户密码访问MySQL数据库 查看操作系统相关信息 ** 该查看方法只适用于CentOS6.5 (lsb_rel ...