0

set character_set_server = utf8;在我使用登录 MySQL 后,我尝试使用(它最初是 utf8mb4)设置字符集服务器mysql -u root -p(我还尝试了另一个用户,并且还使用 指定了一个数据库--database)。运行set命令后,我使用show variables like "%charac%". 它将正确的值显示为utf8。但是,在我退出会话并重新登录并重新检查变量后,它显示 utf8mb4。我也尝试commit;在设置字符集后运行,再次它没有改变值。我应该怎么办?

4

1 回答 1

0

您尝试做的不是交易。事务与 DML(数据修改语言)语句(如 select、insert、upate、delete)一起使用。因此,在这里提交不是正确的事情。

大多数变量都有一个全局值和一个仅对当前会话有效的值。您可以在此处的手册中看到这一点(查看scope)。当您未指定要更改全局值时,将假定会话值。

尝试

set global character_set_server = 'utf8';

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

最后,您可能希望将其保留在 uft8mb4。您可能会认为,您不需要额外的字节,但请记住,仅当您在文本中真正使用像表情符号这样的字符时,才会使用额外的字节。并且在性能方面它实际上表现更好。我手头没有证据,但我最近参加了一个数据库会议,其中一个演讲是关于基准检查的。它在那里说,它的表现要好得多。之前实现的utf8是残缺的utf8,应该尽快死掉。

于 2019-02-05T10:02:01.353 回答