我正试图通过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_ci
和UTf8mb4_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的一个工作小提琴,展示了它使用该排序规则的工作。