我有一个由InnoDB桌制成的30GB MySQL DB。目前,表格集为:“ utf8_unicode_ci”,我想将其更改为“ utf8_general_ci”,最好的方法是什么?目前我要浏览每张桌子并运行 ALTER TABLE some_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 它永远需要...有更好的方法吗?

有帮助吗?

解决方案

我知道你的意思。 Alter表有时必须在使用时重建整个桌子。

假设Alter Table语句正在烦恼您,因为它花费了太长时间并且可以锁定表格,则可以使用2个工具将其作为“在线” Alter表。

如果来自Facebook https://www.facebook.com/notes/mysql-at-facebook/online-schema-change-change-for-mysql/430801045932

一个来自Openark http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/oak-online-alline-alter-table.html (仅MySQL 5.1+)

这两个工具基本上都创建了一个新表,将数据复制并通过更新新表格,并通过新的查询来保持更新,直到完成新表为止。这意味着您需要拥有可用的空间来进行此操作。

希望能帮助到你。

其他提示

您可以尝试:

  • 取一个mysqldump w/ -e -no-no-recreate-info> source.sql
  • 截断所有表
  • 更改所有表
  • 源源。SQL

与所有风险操作一样,请先在测试环境中执行以验证结果。当您“ source.sql”时,如果从MySQL提示符上字面运行,请不要忘记设置名称UTF8。如果插入mySQL,请运行mysql w/ -default-character-set = utf8,以避免您的终端设置中的charset怪异。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top