首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“CHARACTER SET=` vs ` `CONVERT TO字符SET`‘

“CHARACTER SET=` vs ` `CONVERT TO字符SET`‘
EN

Stack Overflow用户
提问于 2022-06-22 12:30:44
回答 1查看 180关注 0票数 1

我对MySQL文档中的两个例子感到困惑

“指定字符集”:ALTER TABLE tbl_name CHARACTER SET = charset_name, ALGORITHM=INPLACE, LOCK=NONE;

和“转换字符集”:ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name, ALGORITHM=COPY;

忽略算法和锁值,两者有什么区别?它们似乎都改变了现有表的字符集?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-22 14:58:37

第一个示例只更改表的默认字符集。

这是元数据唯一的更改,因为它实际上并不改变任何数据,它只更改表的默认值。默认只在以后向表中添加字符串列时应用,而不指定字符集。更改表的默认字符集不会转换表中的任何当前字符串列。它们将保存在以前的字符集中。

可以一个一个地将列转换为新字符集:

代码语言:javascript
复制
ALTER TABLE tbl_name MODIFY COLUMN column1 VARCHAR(50) CHARACTER SET utf8mb4;

或者,您可以在一个更改中转换所有字符串列:

代码语言:javascript
复制
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

这些转换步骤中的任何一个都需要执行表副本来重写数据。如果您有几个字符串列,并且希望将它们全部转换,那么最好使用“转换到字符集”,这样您只需要做一次表复制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72715542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档