zoukankan      html  css  js  c++  java
  • Mysql修改数据库的字符集

    ----修改数据库字符集的一个原则是:新的字符集包含的字库要>=原有的字符集字库,否则已经存在的数据可能会变为乱码。

    如果数据库中暂时还没有数据,那么我们可以直接执行命令。假如此时数据库中有表,那么表的字符集是不会随着数据库的字符集更改而更改的。

    alter database dbname character set charset_name
    

    假如数据库中存在有数据,其实也可以执行这个命令,但是会遗留一个问题,也就是之前已经存在的数据的表的字符集,而只是对新加的表或者记录生效。

    此时我们可以通过另外的方法来将字符集进行修改。

    模拟环境,模拟将数据库A的字符集从latin1修改为gbk(下面语句中的参数具体含义请自行查找)

    1.export目前A数据库中已经存在的表结构(目前A数据库中存在表a)

    mysqldump -uroot -p --default-character-set=gbk -d A >table_create.sql
    

    2.手动将table_create.sql中的表结构的字符集为gbk

    具体是:

    CREATE TABLE `a` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
    

    3.确认应用程序已经不再修改A数据库中所有表的数据,再export所有的数据

    mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set =latin1 A>A_data.sql
    

    4.打开A_data.sql,将其中的SET NAMES latin1修改为SET NAMES gbk.

    /*!40101 SET NAMES gbk */;
    

    5.将以前的数据库删除掉

    6.使用新的字符集来创建同名数据库

    create database A default charset gbk;
    

    7.使用table_create.sql来创建表

    mysql -uroot -p A <table_create.sql
    

    8.import数据,使用A_data.sql

    mysql -uroot -p A <A_data.sql
    

    至此,我们就已经完整的将A数据库的字符集从latin1修改为gbk

  • 相关阅读:
    Winform中用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
    C# 生成二维码
    T-sql语句修改数据库逻辑名、数据库名、物理名
    ASP.NET MVC中使用jQuery时的浏览器缓存问题
    关于asp.net页面缓存
    关于VS 工具箱灰色,不可用的解决方案
    Android
    如何让一个DIV水平,垂直方向都居中于浏览器?
    cookie.setPath()的用法
    CSS选择器
  • 原文地址:https://www.cnblogs.com/Wison-Ho/p/4182371.html
Copyright © 2011-2022 走看看