为了支持表情符号,我在MariaDB上将数据库和表格字符集更改为utf8mb4和排序规则utf8bm4_turkish_ci。虽然我可以通过终端连接到服务器来轻松地插入和选择操作,但是当我想要通过客户端(web应用程序或MySQL工作台)执行插入操作时,我得到了“不正确的字符串值”错误。而且,当我想用select显示数据时,它是损坏的。与此同时,我注意到了另一种情况:即使数据库和表不支持utf8mb4 (我只使用utf8进行测试),我可以通过终端插入表情,甚至可以使用select查看。


my.cnf文件的定义如下;
[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user = mysql
symbolic-links = 0
old_passwords = 0
innodb_file_format = Barracuda
default-storage-engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_thread_concurrency = 24
lower_case_table_names = 1
character-set-server = utf8mb4
collation-server = utf8mb4_turkish_ci
init-connect = 'SET NAMES utf8mb4 COLLATE utf8mb4_turkish_ci'
skip-character-set-client-handshake
innodb_large_prefix
[client]
default-character-set = utf8mb4
[mysql]
skip-secure-auth
default-character-set = utf8mb4发布于 2019-06-23 12:20:29
此外,表中的列需要为CHARACTER SET utf8mb4。请提供SHOW CREATE TABLE以便我们可以检查它。
另外,从失败的客户端执行SHOW VARIABLES LIKE 'char%';;在那里可能是错误的。
https://stackoverflow.com/questions/56700901
复制相似问题