Unicode 在MariaDB主键中作为问号的表情符号

Unicode 在MariaDB主键中作为问号的表情符号,unicode,sqlalchemy,mariadb,primary-key,emoji,Unicode,Sqlalchemy,Mariadb,Primary Key,Emoji,使用mariadb-server-10.1 10.1.32+maria-1~trusty,使用下表: CREATE TABLE `tags` ( `tag_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL, `thing_id` int(11) NOT NULL, PRIMARY KEY (`thing_id`,`tag_name`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLL

使用mariadb-server-10.1 10.1.32+maria-1~trusty,使用下表:

CREATE TABLE `tags` (
  `tag_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `thing_id` int(11) NOT NULL,
  PRIMARY KEY (`thing_id`,`tag_name`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在SQLAlchemy应用程序中显示:

IntegrityError: (IntegrityError) 
(1062, "Duplicate entry '1532-?' for key 'PRIMARY'")
在第二次尝试插入表情符号时

第一个在db中似乎还可以相信我,它在我的控制台和浏览器中显示为alien表情符号:

>从标签中选择标签名称、HEXtag\u名称; +-----+--------+ |tag_name | HEXtag_name| +-----+--------+ |古德古伊| 474F4475559|
|mysql>SELECT'mysql>SELECT'查看@RickJames可能重复的问号,请不要这么快得出结论。你提到的问题不能解决我的问题。我已经在使用上面描述的技术了。可能是1532已经被标记了那个表情符号吗?你又在插入同一个标签?“问号”实际上来自SQLAlchemy,而不是MySQL?如果是这样,考虑插入忽略……同样通过MySQL shell。我找到了另一个与排序相关的答案,但不确定该怎么做。将在几分钟内更新答案请看可能重复的@RickJames的问号,不要这么快得出结论。你提到的问题不能解决我的问题。我已经在使用上面描述的技术了。可能是1532已经被标记了那个表情符号吗?你又在插入同一个标签?“问号”实际上来自SQLAlchemy,而不是MySQL?如果是这样,考虑插入忽略……同样通过MySQL shell。我找到了另一个与排序相关的答案,但不确定该怎么做。将在一分钟内更新答案是的,我有与上面相同的结果。但是utf8mb4_unicode_520_ci是什么?为什么我要选择它而不是我现在的选择?我看到很多关于如何摆脱520的帖子。发现description@RomanSusi-520将表情符号视为不同的符号。这个链接是关于土耳其语的。520不适用于特定语言的要求,再加上更多的谷歌搜索,我没有读更多。当然,也有类似的错误建议将utf8mb4替换为utf8@RomanSusi-第二个链接处理从5.6降级到5.5的人。同样,这是避免520的一个有效理由,但不是一个适用于你的理由。是的,我得到了与上面相同的结果。但是utf8mb4_unicode_520_ci是什么?为什么我要选择它而不是我现在的选择?我看到很多关于如何摆脱520的帖子。发现description@RomanSusi-520将表情符号视为不同的符号。这个链接是关于土耳其语的。520不适用于特定语言的要求,再加上更多的谷歌搜索,我没有读更多。当然,也有类似的错误建议将utf8mb4替换为utf8@RomanSusi-第二个链接处理从5.6降级到5.5的人。同样,这是避免520的正当理由,但不是适用于你的理由。