use*_*656 5 mysql character-set mysql-5.6
最近我在我的 mysql 数据库中插入表情符号和其他 4 字节字符时遇到问题然后我发现我的 mysql 版本是 5.1 并且它不支持 utf8mb4 所以我升级到支持 utf8mb4 的 mysql 5.6 并且在我的整理中我可以选择选择 utf8mb4.but 当我尝试通过 phpmyadmin 直接插入表格行时,我也收到了这个错误,也提到了这个链接
http://dba.stackexchange.com/questions/59126/set-value-of-character-set-client-to-utf8mb4
1 row affected.
Warning: #1366 Incorrect string value: '\xF0\x9F\x9A\x8A k...' for column 'rajulp' at row 1
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,发现这是因为数据库不支持 utf8mb4 字符,然后我在互联网上遵循了一些教程来更新 my.cnf 文件并重新启动 mysql 服务器和服务器。
https://mathiasbynens.be/notes/mysql-utf8mb4
Run Code Online (Sandbox Code Playgroud)
我尝试了几乎所有可能的组合,但是当我在 sql 中输入它时,它会抛出最大值为 utf8,因为我无法插入 eboji 和几个 4 字节字符。
Punjab me 1Train k niche 100 Sardar aa gaye..
Run Code Online (Sandbox Code Playgroud)
以下命令在 mysql 中的输出
SHOW VARIABLES LIKE 'char%'
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Run Code Online (Sandbox Code Playgroud)
请指导
我在安装 MySQL 5.6.23 时遇到了同样的问题。
我必须编辑 /etc/mysql/my.conf 并将这些条目添加到这些部分:
[客户] 默认字符集=utf8mb4 [mysqld] 字符集服务器 = utf8mb4 [mysql] 默认字符集=utf8mb4
然后以root身份执行:service mysql restart
我的网络服务器连接和我的本地(shell)mysql 连接都使用 utf8mb4。
INSERT INTO some_table_name (some_index_id,value_to_be_utf8mb4) 值(55,x'F09F9A8A');
select * from some_table_name; | some_index_id | value_to_be_utf8mb4 | | 55 | | 1 行(0.00 秒)
以下是来自 mysql 的新命令行实例化:
mysql> 显示变量如 "%coll%"; +----------------------+--------------------+ | 变量名 | 价值 | +----------------------+--------------------+ | collation_connection | utf8mb4_general_ci | | collation_database | utf8mb4_general_ci | | collation_server | utf8mb4_general_ci | +----------------------+--------------------+
mysql> 显示变量如 "%char%"; +-------------------------+-------------- ------+ | 变量名 | 价值 | +-------------------------+-------------- ------+ | character_set_client | utf8mb4 | | 字符集连接| utf8mb4 | | 字符集数据库| utf8mb4 | | character_set_filesystem | 二进制 | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | 字符集系统| utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +-------------------------+-------------- ------+
最后要注意的是,根据 mysql 5.x 规范,“character_set_system”始终是“utf8”,所以这是正常的。
您仍然将character_set_client设置为utf8
首先确保utf8mb4存在
mysql> select * from information_schema.character_sets where CHARACTER_SET_NAME like 'utf8%';
+--------------------+----------------------+---------------+--------+
| CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION | MAXLEN |
+--------------------+----------------------+---------------+--------+
| utf8 | utf8_general_ci | UTF-8 Unicode | 3 |
| utf8mb4 | utf8mb4_general_ci | UTF-8 Unicode | 4 |
+--------------------+----------------------+---------------+--------+
2 rows in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
您可能需要执行以下操作之一
登录mysql后运行此命令
mysql> set character_set_client = 'utf8mb4';
mysql> show variables like 'character_set_client';
Run Code Online (Sandbox Code Playgroud)
这肯定会确保您的客户会话正在使用utf8mb4
使用命令行中的字符集启动mysql客户端
用这个测试一下
mysql -uroot -p --default-character-set=utf8mb4 -ANe"show variables like 'character_set_client'"
Run Code Online (Sandbox Code Playgroud)
它会回显
+----------------------+---------+
| character_set_client | utf8mb4 |
+----------------------+---------+
Run Code Online (Sandbox Code Playgroud)
或者
mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
Run Code Online (Sandbox Code Playgroud)
如果设置了character_set_client ,则运行
mysql -uroot -p --default-character-set=utf8mb4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22563 次 |
最近记录: |