繁体   English   中英

无法在mysql中插入一些特殊字符

[英]Can't insert some special characters into mysql

该字符后的值cut

为什么会这样呢?

create table tmp2(t1 varchar(100)); 

insert into tmp2 values('before💀after'); 

mysql> select * from tmp2; 
+--------+ 
| t1 | 
+--------+ 
| before | 
+--------+ 
1 row in set (0.01 sec)

我按照命令运行并返回了一些有用的信息

mysql> SHOW FULL COLUMNS FROM tmp2;
+-------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+-------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| t1    | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
+-------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
1 row in set (0.00 sec)

和这个,

mysql> SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = "test" AND table_name = "tmp2" AND column_name = "t1";
+--------------------+
| character_set_name |
+--------------------+
| utf8               |
+--------------------+
1 row in set (0.00 sec)

我在ubuntu / mysql命令行上对此进行了测试。

我在这里找到解决方案

我了解到utf8中不包含某些字符

这是一个很好的文章在这里

我需要将utf8列更改为utf8mb4并成功

alter table tmp2 modify t1 varchar(100) character set utf8mb4;

SET NAMES utf8mb4;

insert tmp2 values('before💀after');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM