在我使用set character_set_server = utf8;
登录到MySQL之后,我试图通过使用mysql -u root -p
(原为utf8mb4)来设置字符集服务器(我还尝试了另一个用户,并且还指定了{{1 }})。运行--database
命令后,我使用set
检查了变量。它显示正确的值为 utf8 。但是,退出会话并重新登录并重新检查变量后,它显示为utf8mb4。设置字符集后,我还尝试运行show variables like "%charac%"
,但它并没有改变值。我该怎么办?
答案 0 :(得分:0)
您要尝试的不是交易。事务与DML(数据修改语言)语句(例如选择,插入,更新,删除)一起使用。因此,在这里提交不是正确的事情。
大多数变量具有全局值和仅对当前会话有效的值。您可以在手册{{3}}中看到它(请查看scope
)。当您不指定要更改全局值时,将使用会话值。
尝试
set global character_set_server = 'utf8';
还将更改添加到etc/my.cnf
部分的[mysqld]
中。否则,当您重新启动mysql服务器(mysqld)时,此更改将再次丢失。
最后,您可能希望将其保留在uft8mb4处。您可能会认为不需要附加字节,但是请记住,仅当您在文本中真正使用了表情符号之类的字符时,才使用附加字节。在性能方面,它实际上表现更好。我没有手头的证据,但是最近我在一次数据库会议上,当时有一次关于基准测试的演讲。它说,它的性能要好得多。先前由utf8实现的是残缺的utf8,应该尽快消失。