我的数据库、表、字段都使用 utf8mb4。我可以很好地将表情符号存储到某些字段中。现在我尝试查询,例如:
SELECT * FROM user
WHERE 名称=''
令人惊讶的是,结果是字段名称不同的记录,例如 ''
看起来 mysql 通过长度而不是内容来匹配表情符号字符串。
有什么想法可以解决这个问题吗?非常感谢。
刚刚对我的桌子做了这个命令:
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
就这样。结果是正确的。
尝试这个:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
你桌子上的整理顺序是什么?由于您使用的是 utf8mb4 它应该是utf8mb4_unicode_ci
. 其他任何事情,您都可能会遇到您所看到的问题 - 更糟糕的是,您甚至可能会返回多条记录。
要设置整理顺序,请使用:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;