MySQL utf8 多字节(utf8mb4)插入重复条目问题
Posted
技术标签:
【中文标题】MySQL utf8 多字节(utf8mb4)插入重复条目问题【英文标题】:MySQL utf8 multibyte (utf8mb4) insert duplicate entry problem 【发布时间】:2021-11-22 12:44:44 【问题描述】:我有两个单词('বাঁধা'和'বাধা')要插入到 mysql (8.0.12 - MySQL Community Server - GPL) 表中。 “বাঁধা”这个词插入正确。但是在插入'বাধা'时,mysql会报错:
INSERT INTO lc6_words(jp_word, jp_fcharascii) VALUES('বাঁধা', 2476);
/*Query OK*/
INSERT INTO lc6_words(jp_word, jp_fcharascii) VALUES('বাধা', 2476);
/*#1062 - Duplicate entry 'বাধা' for key 'jp_word'*/
表结构:
CREATE TABLE IF NOT EXISTS `lc6_words` (
`jp_wkey` BIGINT NOT NULL AUTO_INCREMENT,
`jp_word` varchar(255) NOT NULL,
`jp_fcharascii` int UNSIGNED NOT NULL,
`jp_word_occ` BIGINT UNSIGNED NOT NULL DEFAULT 1,
UNIQUE(`jp_word`),
PRIMARY KEY (`jp_wkey`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF8MB4 COLLATE=utf8mb4_bin;
相关查询及其输出:
SELECT jp_wkey FROM lc6_words WHERE BINARY jp_word='বাঁধা';
/* 1 */
SELECT jp_wkey FROM lc6_words WHERE BINARY jp_word='বাধা';
/* Empty */
感谢您阅读本文。如果你分享你的想法,还有更多:)。
【问题讨论】:
试试这个:select jp_word from lc6_words where jp_wkey = 0;
。您有一个主键为 0 的行,这在您有一个自增列时是不常见的。
对不起...一个错误。没有 0 键。已更新问题。
【参考方案1】:
整理似乎有问题。运行以下命令后,一切正常:
ALTER TABLE lc6_words MODIFY jp_word VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
注意: VARCHAR 大小从 255 更改为 191。
【讨论】:
以上是关于MySQL utf8 多字节(utf8mb4)插入重复条目问题的主要内容,如果未能解决你的问题,请参考以下文章