【发布时间】:2014-07-09 06:33:45
【问题描述】:
我有一个 MySQL 表 CHINESE 和 DEFAULT CHARSET=latin1,它有一个列 NAME 和 CHARACTER 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