首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql命令行中设置名称'charset_name‘[排序'collation_name']

问在mysql命令行中设置名称'charset_name‘[排序'collation_name']
EN

Stack Overflow用户
提问于 2018-02-14 07:28:52
回答 1查看 988关注 0票数 0

几天前,当我处于开发状态时,在命令use my_dev_database之后,我碰巧在mysql上使用以下命令将字符集应用于特定的数据库:

SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;

我打算使用这个命令来更改"character_set_client“和"character_set_results”。但是,这个命令恰好导致在同一台服务器上为其他数据库(可能是所有数据库)设置字符,包括我工作的webSite的数据库。我很惊讶!但是经过十几秒钟后,其他数据库的字符集被自动恢复,而用于my_dev_database的数据库仍然维护修改过的字符集。

我不明白mysql这种奇怪的行为。在我工作网站的第二天发生了什么?如果有用户在此期间提交帖子,修改后的字符集将保存在mysql服务器上我的工作网站的数据库中?

我真的很担心这个。如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-02-17 02:56:51

不,它不会改变数据库的字符集;它会改变数据的解释。

更准确地说,SET NAMES声明了客户端的编码。此外,当数据(通过INSERT/SELECT)移动到/离开服务器时,它将从SET NAMES字符集转换为声明为的任何字符集。

因此,似乎只有其他数据库被更改了,并且恢复了。烟雾和镜子。

请参阅https://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored中的“最佳实践”,以了解需要在多个地方设置utf8mb4,以使MySQL具有一致、平稳的运行。

utf8mb4是正确的方法;排序是次要的问题。

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

https://stackoverflow.com/questions/48781786

复制
相关文章

相似问题

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