"Convert to character set" 不将只有整数列的表转换为指定的字符集
"Convert to character set" doesn't convert tables having only integer columns to specified character set
我在 2 台服务器上工作,每台服务器都具有相似的配置,包括 mysql 特定于字符集和排序规则的变量,并且都在 运行ning mysql 服务器和客户端 5 上。6.x。默认情况下,所有表都在 latin1 中,包括只有整数列的表,但是当我 运行
ALTER TABLE `table_name` CONVERT TO CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`
对于每台服务器中的所有表,只有一台服务器将所有表转换为 utf8。
我已经尝试过的:
在 运行 上面列出的命令
之前将默认数据库字符 (character_set_database) 设置为 utf8
解决方案已经为我工作(但仍然不确定为什么它有效)
ALTER TABLE `table_name` CHARACTER SET = `utf8` COLLATE `utf8_unicode_ci`
最后还有2个问题:
CONVERT TO CHARACTER SET
在一台服务器上工作,而不在其他服务器上工作
- 解决方案已经为我工作,类似于
CONVERT TO CHARACTER SET
,我遇到的唯一不同是,它不会隐式地将所有列转换为指定的字符集。
有人可以帮助我了解发生了什么吗?
提前致谢。
IIRC,这是一个最终被修复的错误。参见 bugs.mysql.com。 (这个bug大概是从4.1版本开始就存在的,当时确实添加了CHARACTER SETs
。)
我更愿意在两个地方明确说明,从而避免您提出的问题:
- 在做
CREATE TABLE
的时候,我明确地说出我需要什么CHARACTER SET
。这避免了依赖于创建数据库时建立的 default,也许是几年前。
- 添加列 (
ALTER TABLE ADD COLUMN ...
) 时,我检查(通过 SHOW CREATE TABLE
)以查看 table 是否已经 具有所需的字符集。即便如此,我可能会为该专栏明确声明 CHARACTER SET
。同样,我不相信 table. 的历史
注意:我正在从明确的 SQL 执行这些查询,而不是从某些 UI 可能是 "helping" 我。
关注
@HBK 发现 http://bugs.mysql.com/bug.php?id=73153。从中,我怀疑这是 'should be' 用户所做的:
ALTER TABLE ...
CONVERT TO ...
DEFAULT CHARACTER SET ...; -- Do this also
我在 2 台服务器上工作,每台服务器都具有相似的配置,包括 mysql 特定于字符集和排序规则的变量,并且都在 运行ning mysql 服务器和客户端 5 上。6.x。默认情况下,所有表都在 latin1 中,包括只有整数列的表,但是当我 运行
ALTER TABLE `table_name` CONVERT TO CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`
对于每台服务器中的所有表,只有一台服务器将所有表转换为 utf8。
我已经尝试过的:
在 运行 上面列出的命令
之前将默认数据库字符 (character_set_database) 设置为 utf8解决方案已经为我工作(但仍然不确定为什么它有效)
ALTER TABLE `table_name` CHARACTER SET = `utf8` COLLATE `utf8_unicode_ci`
最后还有2个问题:
CONVERT TO CHARACTER SET
在一台服务器上工作,而不在其他服务器上工作- 解决方案已经为我工作,类似于
CONVERT TO CHARACTER SET
,我遇到的唯一不同是,它不会隐式地将所有列转换为指定的字符集。
有人可以帮助我了解发生了什么吗?
提前致谢。
IIRC,这是一个最终被修复的错误。参见 bugs.mysql.com。 (这个bug大概是从4.1版本开始就存在的,当时确实添加了CHARACTER SETs
。)
我更愿意在两个地方明确说明,从而避免您提出的问题:
- 在做
CREATE TABLE
的时候,我明确地说出我需要什么CHARACTER SET
。这避免了依赖于创建数据库时建立的 default,也许是几年前。 - 添加列 (
ALTER TABLE ADD COLUMN ...
) 时,我检查(通过SHOW CREATE TABLE
)以查看 table 是否已经 具有所需的字符集。即便如此,我可能会为该专栏明确声明CHARACTER SET
。同样,我不相信 table. 的历史
注意:我正在从明确的 SQL 执行这些查询,而不是从某些 UI 可能是 "helping" 我。
关注
@HBK 发现 http://bugs.mysql.com/bug.php?id=73153。从中,我怀疑这是 'should be' 用户所做的:
ALTER TABLE ...
CONVERT TO ...
DEFAULT CHARACTER SET ...; -- Do this also