错误:没有这样的排序规则:NOCASE_UTF8

问题描述 投票:0回答:2

我正在使用

sqlite3
中的现有数据库文件。特定表中的一列具有子句
COLLATE NOCASE_UTF8
。我无法在该字段中插入任何文本。它给出以下错误:

sqlite> INSERT INTO recording (recordingName) VALUES ('abcd');
Error: no such collation sequence: NOCASE_UTF8

我该如何在其中输入文字?

sqlite
2个回答
2
投票

这是自定义排序规则。 SQLite 对名为“NOCASE”的排序规则有本机支持,但不支持名为“NOCASE_UTF8”的排序规则。我认为您收到错误是因为您的 SQLite 数据库中没有定义这样的排序规则,但尽管如此,该排序规则名称仍然存储为表定义的一部分。

我不确定 SQLite 如何处理通过 C API 定义的排序规则的存储。但我很确定这就是你需要解决的问题。另请参阅需要整理的回调的文档。 (您可能只需要调用一次 sqlite3_collation_needed()。)


0
投票

您可以使用“CITEXT”代替“NOCASE”

与 SQLite 中一样,您通常会使用不同的排序规则来实现不区分大小写的比较。

SQLite 提供了 citext 数据类型用于不区分大小写的文本比较,您可以直接将其用于您的列。以下是如何使用 citext 创建表格

© www.soinside.com 2019 - 2024. All rights reserved.