插入匈牙利文字字符时出错



我正试图通过SQL查询插入此文本

INSERT INTO `tbl_instructions` (`No`, `Language`, `Text`) VALUES
('Introduction','HU','Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

我得到了:

#1366-字符串值不正确:'\xC5\x91\xC3\xADv…'对于列my_database.tbl_instructions.第1行的文本

我尝试了utf8_unicode_ciUTf8mb4_unicode_ci,但仍然收到相同的错误。

这可能是目标表中Text列的排序规则问题。

考虑以下内容,该内容使用使用latin1_general_ci排序规则创建的Text列:

CREATE TEMPORARY TABLE `tbl_instructions` (`Text` VARCHAR(1000) COLLATE latin1_general_ci);
INSERT INTO `tbl_instructions` (`Text`) VALUES ('Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

这会产生以下错误:

错误代码:1366。字符串值不正确:"\xC5\x91\xC3\xADv…"对于第1行的"文本"列

现在考虑使用utf8mb4_0900_ai_ci:的以下内容

CREATE TEMPORARY TABLE `tbl_instructions` (`Text` VARCHAR(1000) COLLATE utf8mb4_0900_ai_ci);
INSERT INTO `tbl_instructions` (`Text`) VALUES ('Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

此操作成功运行。

仅仅在INSERT上指定排序规则是不够的——如果目标列是不兼容的排序规则,那么您将看到错误消息。

这个表应该修改为正确的排序规则——我并不是建议它应该是utf8mb4_0900_ai_ci。使用适合您需要的排序规则(例如,latin2_general_ci也适用于您的字符集(。

更新以下OP将RDBMS更改为MariaDB而不是MySQL

根据您关于使用MariaDB而不是MySQL的评论,您可以使用MariaDB 10.2中提供的utf8mb4_general_ci

下面是MariaDB 10.3的一个工作小提琴,展示了它使用该排序规则的工作。

最新更新