升级 Wagtail 后如何解决 fts5 错误
Posted
技术标签:
【中文标题】升级 Wagtail 后如何解决 fts5 错误【英文标题】:How can I resolve fts5 error after I upgraded Wagtail 【发布时间】:2021-11-21 11:06:24 【问题描述】:我已使用 Django 3.1.13 将 Wagtail 安装升级到 2.15.1
当我运行 manage.py migrate 时出现错误
django.db.utils.OperationalError:没有这样的模块:fts5
我已经搜索过,但找不到任何解决此问题的方法
有人可以帮忙吗?
这是发生错误时在django/db/backends/sqlite3/base.py中运行的代码
class SQLiteCursorWrapper(Database.Cursor):
def execute(self, query, params=None):
if params is None:
return Database.Cursor.execute(self, query)
上线失败
return Database.Cursor.execute(self, query)
query 的最后 3 个值是
CREATE VIRTUAL TABLE wagtailsearch_indexentry_fts USING fts5(autocomplete, body, title)
PRAGMA foreign_key_check
PRAGMA foreign_keys = ON
失败发生在最后一个
【问题讨论】:
【参考方案1】:问题出在鹡鸰
我从站点 wagtail 包中删除了 migrations 文件夹并运行了 makemigrations 和 migrate。现在可以使用了
【讨论】:
这绝对不推荐。这将使升级到未来的 Wagtail 版本变得异常困难,因为您生成和应用的迁移与 Wagtail 的下一个版本附带的迁移不匹配。【参考方案2】:这是与不提供 fts5
扩展名的 sqlite 版本的兼容性问题,现已在 Wagtail 2.15.2 中修复。
(旧资料,留作参考:)
这是一个开放的 Wagtail 问题,目前正在 https://github.com/wagtail/wagtail/issues/7798 处理。
现在,您需要确保系统上安装的 sqlite 版本带有 fts5
扩展名。对于 Mac 和 Windows,这很可能与 Python 安装程序捆绑在一起,所以这不是问题。对于 Linux,这取决于发行版 - Ubuntu 18.04 有,16.04 没有。有关如何升级的详细信息,请参阅How can I use the FTS5 extension with the sqlite3 python module with Python 3.7 on Ubuntu 16.04?。
【讨论】:
以上是关于升级 Wagtail 后如何解决 fts5 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Peewee 和 SQLite 的 FTS5 中使用 trigram tokenizer/similarity 选项?
Sqlite FTS5:使用 Trigram Tokenizer 进行子字符串匹配