已经有很多关于为 mysql 选择正确字符集的帖子,但对于 Rocksdb 引擎来说,这又是一个不同的(而且非常令人沮丧)的故事。
首先,我决定使用 utf8-binary 作为字符集(myrocks 支持 latin1、utf8-bin 和二进制),因为我的数据可能包含特殊字符,我想保存。
此外,我使用 PHP 和 PDO 将数据加载到 mysql 中,连接如下所示:
$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'user', 'password');
所以我将字符集设置为 utf8(我也尝试过使用utf8_bin
,但 PDO 不支持)。虽然,我可以插入一些行,但有时我会收到如下错误:
不正确的字符串值:列 'column_name' 的 '\xF0\x9F\x87\xA8\xF0\x9F...'
但是现在的错误是什么?此十六进制序列编码一个 unicode-smily(区域指示符号字母 c + 区域指示符号字母 n)。对我来说,似乎有效的 utf8 和 mysql 以及 php 都配置为使用它。