【问题标题】:Changing character set of MySQL tables更改 MySQL 表的字符集
【发布时间】:2014-07-09 06:33:45
【问题描述】:

我有一个 MySQL 表 CHINESEDEFAULT CHARSET=latin1,它有一个列 NAMECHARACTER SET latin1。我有大量的数据存储在这个表中。大约一百万行。而且,我想在我的数据库上执行以下命令:
ALTER DATABASE <DATABASE_NAME> DEFAULT CHARACTER SET utf8
ALTER TABLE CHINESE DEFAULT CHARACTER SET utf8
ALTER TABLE CHINESE MODIFY NAME VARCHAR(30) CHARACTER SET utf8

考虑到我有大量数据存储在这个数据库中。我应该在我的数据库上运行这些命令吗?这些命令会以任何方式锁定数据库吗?

我正在使用 Java 在数据库中查询和插入值。在 URI 字符串中附加 ?useUnicode=yes&characterEncoding=UTF-8 会对我有帮助吗?

【问题讨论】:

  • 这将花费大量时间,并且不会按照您的预期进行。表上的字符集是新创建列的默认字符集。如果一列中的数据存储在错误的字符集中,仅仅改变字符集是没有用的,你还需要修复数据。
  • @newtover:我知道我必须处理旧数据。我只是想确保我得到的新数据是正确的。我只想更改“NAME”列的字符集。请提出任何替代方法。

标签: mysql sql database utf-8 character-encoding


【解决方案1】:

这需要很长时间, 我认为最好将 .sql 导出并且不要将那里的转码替换 latin1 为 utf8 ,然后再导入临时表中。最后交换他们的名字。

【讨论】:

  • 我正在使用 Java 在数据库中查询和插入值。在 URI 字符串中附加“?useUnicode=yes&characterEncoding=UTF-8”对我有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2020-04-19
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2015-09-29
相关资源
最近更新 更多