我试图通过使用set character_set_server = utf8;
设置字符集服务器(这是最初utf8mb4)我使用mysql -u root -p
登录到MySQL后,(我也试过其他用户,同时指定一个DB与--database
)。运行set
命令后,我用show variables like "%charac%"
检查变量。它显示了正确的价值为UTF8。然而,当我退出会议并重新登录并重新检查它显示utf8mb4变量。我也试着设置字符集运行后commit;
,再次它并没有改变的价值。我该怎么办?
你现在要做的不是交易。交易使用具有DML(数据修改语言)语句(如选择,插入,upate,删除)。因此承诺是不是在这里做正确的事情。
大多数变量具有全球性的价值,这是仅适用于当前会话的值。你可以看到,在手动here(看scope
)。当您不指定要改变全局值,则假定会话值。
与尝试
set global character_set_server = 'utf8';
还要补充一点改变你etc/my.cnf
下[mysqld]
部分。否则,当你重新启动MySQL服务器(mysqld的)这种变化将再次落空。
最后,你可能要离开,在uft8mb4。你可能会认为,你不需要额外的字节,但请记住,这是额外的字节只用,当你真正使用的字符就像在你的文字表情符号。而性能方面,它实际上执行得更好。我手头没有证据在这里,但我最近在一个数据库中的会议,其中一个演讲是关于基准检查。在那里,它说,它执行好多了。先前被实现的UTF8是一个残缺的UTF8应该尽快死去。