• MySQL字符集


    ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latinl

    source test.sql

    root# mysql -uroot -p'' oldboy < test.sql

    default -charact-set=latinl

    不乱码的思想:Linux,客户端,服务器,库,表,程序!
    1、linux系统
    root# cat /etc/sysconfig/i18n
    #LANG="zh_CN.GB2312"

    2、MySQL客户端
    临时:
    set 列名 latinl;
    法1
    #mysql -uroot -p
    set names utf8
    法2
    #mysql -uroot -p --default-character-set=utf8


    永久:
    更改my.cnf客户端模块参数,实现set names utf8的效果,并且永久生效。
    [client]
    default-character-set=latinl
    提示,无需重启服务,退出重新登陆,相当于 set names latinl
    /etc/init.d/mysqld start

    3、MySQL服务端
    [mysqld]
    default -character-set=utf8 5.1版本以及之前版本
    character -set -server=usf8 5.5版本

    4、MySQL库表
    create database oldboy_utf8 DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;

    CREATE TABLE 'student'(
    'id' int (4) NOT NULL AUTO_INCREMENT,
    'name' char(20) NOT NULL,
    PRIMARY KEY ('id')
    )ENGINE=InnoDB AUTO_INCERMENT=10 DAFAULT CHARSET=utf8

    5、


    程序
    简体 UTF8


    总结:
    mysqldump.mysqlbinlog.mysql.mysqladmin


    6、查看表结构
    desc 表名;
    show columns from 表名;
    describe 表名;
    show create table 表名;

    use information_schema
    select * from columns where table_name='表名';
    查看表结构:
    mysql> status;
    mysql> select version();
    mysql --help | grep Distrib
    $ rpm -qa|grep mysql


    查看表状态:
    show create table CourseG

    查看字符集:
    mysql -uroot -p'abc123,.' -e "SHOW CHARACTER SET;"

    mysql -uroot -p'abc123,.' -e "SHOW CHARACTER SET;"|egrep "gbk|utf8|latin1"awk'{print $0}'



    {
    永久修改字符集:
    另一种情况,可以永久生效字符集,方法如下:
    对于中文乱码问题,需要设置mysql字符集:
    用find命令查找cnf文件。记得不要去找my.cnf因为它不一定存在,而应该找*.cnf。
    # find / -name '*.cnf'
    /usr/share/doc/MySQL-server-5.5.27/my-huge.cnf
    /usr/share/doc/MySQL-server-5.5.27/my-large.cnf
    /usr/share/doc/MySQL-server-5.5.27/my-medium.cnf
    /usr/share/doc/MySQL-server-5.5.27/my-small.cnf
    /usr/share/doc/MySQL-server-5.5.27/my-innodb-heavy-4G.cnf
    /usr/share/doc/kpathsea-2007/kpathsea_defaults/texmf-kpathsea-defaults.cnf
    /usr/share/mysql/my-huge.cnf
    /usr/share/mysql/my-large.cnf
    /usr/share/mysql/my-medium.cnf
    /usr/share/mysql/my-small.cnf
    /usr/share/mysql/my-innodb-heavy-4G.cnf
    /etc/pki/tls/openssl.cnf

    找到之后,复制一个出来
    # cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
    打开my.cnf修改编码
    # vi /etc/my.cnf

    mysql 5.5以下:
    在[mysqld]下添加
    default-character-set=utf8
    在[client]下添加
    default-character-set=utf8


    mysql 5.5 改为:
    [client]
    character-set-server = utf8
    [mysqld]
    character-set-server = utf8
    }


    登陆时修改字符集:
    mysql -uroot -p'abc123,.' --default-character-set=latin1

    检查:
    sed -n '18,19p' /etc/my.cnf
    [client]
    #default-character-set=utf8
    #password = your_password

    为什么服务器要重启才能生效:
    因为linux要把配置加载到内存才行






    指定字符集建库:
    create database names DEFALUT CHARACTER SET UTF8 COLLATE utf8_general_ci;
    指定字符集建表:
    CREATE TABLE 'student'(
    'id' int (4) NOT NULL AUTO_INCREMENT,
    'name' char(20) NOT NULL,
    PRIMARY KEY ('id')
    )ENGINE=InnoDB AUTO_INCERMENT=10 DAFAULT CHARSET=utf8


    字符集要一致:


    /etv/my.cnf
    [mysqld]服务端
    [client]客户端
    Linux
    /etc/sysconfig/i18n
    开发程序


    如何更改生产MySQL数据库库表字符集
    对于已有的数据库想修改字符集不能通过"alter adtabase character set*"或"alter table tablename character set*"
    这两个命令都不能更新已有记录的字符集,只能更新新创建的表或者记录
    已经有记录的字符集的调整,必须先将数据导出,经过修改字符集后重新导入后才能完成修改。


    1、导出表结构
    mysqldump -uroot -p --default-character-set=latinl -d dbname>alltable.sql
    --default-character-set=gbk 表示字符集进行连接 -d只导表结构
    2、编辑alltable.sql将latin1改成GBK

    3、确保数据库不再更新,导出所以数据
    mysqldump -uroot -p --quick --no-create-info --extend-insert --default-character-set=latin1 dbname >alldata.sql
    参数说明:
    --quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有行,并输出前CACHE到内存中
    --no-create-info:不创建 CREATE TABLE语句 --extend-insert:使用包括几个VALUES列表的多行INSERT语法,这样文件更小,IO也小,导入数据时会非常快。 --default-character-set=latin1:#按照原有的字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。
    4、打开alldata.sql将set names latin1 修改成set names gbk;
    5、建库
    create database daname default charset gbk;
    6、创建表,执行allable.sql
    mysql -uroot -p dbaneme <alltable.sql
    7、导入数据:
    mysql -uroot -p dbaneme <alldata.sql

    注意:
    选择目标字符集时,要注意最好大于等于源字符集(字库更大),否则 可能会丢失不被支持的数据。


    总结:
    1、导出表结构及建库建表语句,sed批量更改
    2、导出所以数据
    3、修改mysql服务端和客户端编码
    4、删除原有的库表及数据
    5、导入新的建库及建表语句
    6、导入mysql的所有数据
    inser into Course (Cno,Cname,Tno)values(1,计算机,1);

  • 相关阅读:
    毕设进度28
    任务27
    任务26
    任务25
    任务24
    第二次冲刺
    课堂作业-搜狗输入法
    课堂作业-寻找水王
    博客花园典型用户和场景
    第十天
  • 原文地址:https://www.cnblogs.com/xusx/p/5990059.html
Copyright © 2020-2023  润新知