zoukankan      html  css  js  c++  java
  • MySQL 字符集问题及安全的更新操作

    一、字符集乱码

    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;
  • 相关阅读:
    sharepoint 2010 资料
    调试 SharePoint 解决方案
    定义不同模板的网站集
    作图工具
    struts2的优点
    get load
    什么是java的事物
    session的实现方式
    final 和static的关系
    各种大神的表单验证 感谢大神的辛苦
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/7965903.html
Copyright © 2011-2022 走看看