【问题标题】:How to change Collation to utf8_bin in one go如何一次性将排序规则更改为 utf8_bin
【发布时间】:2011-06-14 15:01:05
【问题描述】:

我已将所有数据库表的排序规则设置为latin1_swedish_ci,现在我意识到我应该使用utf8_binutf8_general_ci

如何一次性将表格中的排序规则更改为utf8_binutf8_general_ci?我可以使用查询之类的吗?

【问题讨论】:

    标签: mysql database-design utf-8 collation


    【解决方案1】:

    您只需对每个表运行 ALTER,如下所示:

    ALTER TABLE <table name> COLLATE utf8_general_ci;
    

    如果您还需要更新现有的字符编码(不太可能通过事物的声音),您可以使用:

    ALTER TABLE <table name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    

    【讨论】:

      【解决方案2】:

      您还可以使用以下方法更新数据库排序规则:

      ALTER DATABASE  `DATABASE_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
      

      【讨论】:

      • 这样做似乎已经在模式中的所有表上设置了排序规则。谢谢。
      【解决方案3】:

      您可以使用ALTER TABLE 更改表格的排序规则:

      alter table table_name collate=utf8_general_ci;
      

      【讨论】:

        【解决方案4】:

        这里有两种方法。第一个为我工作。从终端(只记得之前备份。)

        mysql --database=dbname -B -N -e "SHOW TABLES"  | awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"}' | mysql --database=dbname &
        

        来源:Commandlineinfu.com

        来自 MySQL 你将不得不使用 Concat 命令

        SELECT CONCAT('ALTER TABLE `', tbl.`TABLE_SCHEMA`, '`.`', tbl.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM `information_schema`.`TABLES` tbl WHERE tbl.`TABLE_SCHEMA` = 'dbname'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-11-20
          • 2018-06-10
          • 1970-01-01
          • 1970-01-01
          • 2021-01-28
          • 2017-07-14
          • 2011-02-13
          相关资源
          最近更新 更多