无法在utf8mb3表中保存表情符号...一夜之间,因为MariaDB 10.6更新并切换到nd_mysqli

iyr7buue  于 2023-03-23  发布在  Mysql
关注(0)|答案(1)|浏览(143)

之前使用MariaDB 10.5mysqli,我在utf8 mb 3表上有很多WordPress网站,可以成功地在数据库中保存各种表情符号。
现在我换了MariaDB 10.6nd_mysqli,如果数据库和表转换为utf8 mb 4,WordPress就不能再保存已经包含表情符号的旧帖子了……
对于WordPress用户来说,解决这个问题非常耗时,因为这种情况发生在Apacheerror_log或WordPressdebug.log中没有任何通知。WordPress在经典编辑器中没有显示任何明确的错误:编辑文章表单只是刷新,内容丢失。或者在块编辑器中,错误是 “更新失败。错误消息:无法更新数据库中的帖子” 和/或浏览器控制台中显示错误500,服务器中没有日志。
最令用户沮丧的是,旧的WordPress网站,在utf8 mb 3中使用旧表,之前成功地将表情符号存储在旧内容中......然后,一夜之间(服务器更新后),同一个旧的WordPress网站无法再保存带有表情符号的内容。
我试着改变MariaDB old_mode,它应该是空的,就像在my.cnf中:
old_mode=""
在MariaDB 10.6中,utf8默认是utf8 mb 3的别名,但我猜可以通过将old_mode系统变量的默认值更改为空值(more info about utf8 alias in the MariaDB unicode doc)来将其更改为ut 8 mb 4。
但是它不起作用...表情符号仍然不能保存在utf8 mb 3表中***,因为它在*之前工作。
·我可以理解utf8 mb 3不适合emoji。
但是...
·我不明白为什么过去用utf8 mb 3表创建的那么多旧WordPress网站都有旧内容,里面存储了大量的表情符号,这些表情符号在前端和后端都能正常显示,而不会被
??**符号取代。
现在光是存钱是不可能的。
这种新行为是什么?

myss37ts

myss37ts1#

考虑将表转换为使用utf8mb4字符集来迁移到UTF-8。旧的3字节字符集已被弃用,不应使用。
PHP (mysqlnd) does not support utf8mb3。您还不能使用此字符集。如果您不能转换表,请使用utf8mb3的别名:utf8 .

相关问题