设置字符集后,MySQL不提交更改

时间:2019-02-05 09:41:06

标签: mysql collation character-set

在我使用set character_set_server = utf8;登录到MySQL之后,我试图通过使用mysql -u root -p(原为utf8mb4)来设置字符集服务器(我还尝试了另一个用户,并且还指定了{{1 }})。运行--database命令后,我使用set检查了变量。它显示正确的值为 utf8 。但是,退出会话并重新登录并重新检查变量后,它显示为utf8mb4。设置字符集后,我还尝试运行show variables like "%charac%",但它并没有改变值。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您要尝试的不是交易。事务与DML(数据修改语言)语句(例如选择,插入,更新,删除)一起使用。因此,在这里提交不是正确的事情。

大多数变量具有全局值和仅对当前会话有效的值。您可以在手册{{3}}中看到它(请查看scope)。当您不指定要更改全局值时,将使用会话值。

尝试

set global character_set_server = 'utf8';

还将更改添加到etc/my.cnf部分的[mysqld]中。否则,当您重新启动mysql服务器(mysqld)时,此更改将再次丢失。

最后,您可能希望将其保留在uft8mb4处。您可能会认为不需要附加字节,但是请记住,仅当您在文本中真正使用了表情符号之类的字符时,才使用附加字节。在性能方面,它实际上表现更好。我没有手头的证据,但是最近我在一次数据库会议上,当时有一次关于基准测试的演讲。它说,它的性能要好得多。先前由utf8实现的是残缺的utf8,应该尽快消失。