You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何在sqflite启用FTS5?创建FTS5表报错求助

解决sqflite创建FTS5表报"no such module: fts5"的问题

以下是几个经过验证的解决方法,按优先级尝试:

1. 检查FTS5建表语法是否正确

确保你的建表语句符合SQLite FTS5的标准格式,常见错误包括拼写错误、遗漏关键字:
正确示例:

CREATE VIRTUAL TABLE notes USING fts5(title, content);

注意:

  • 必须使用VIRTUAL TABLE
  • 关键字USING不能省略
  • fts5是小写(SQLite不区分大小写,但部分环境可能严格)

2. 切换到sqflite_common_ffi库

默认sqflite依赖系统自带的SQLite,部分Android设备或旧系统的SQLite版本未启用FTS5。改用sqflite_common_ffi可以使用自带的、完整支持FTS5的SQLite库:

  • 修改pubspec.yaml中的依赖,替换原sqflite为:
dependencies:
  sqflite_common_ffi: ^2.3.0
  • 在初始化数据库前添加FFI初始化代码:
import 'package:sqflite_common_ffi/sqflite_ffi.dart';

void setupDatabase() {
  // 初始化FFI环境
  sqfliteFfiInit();
  // 设置默认数据库工厂为FFI版本
  databaseFactory = databaseFactoryFfi;
}
  • 之后正常打开数据库、创建表即可,无需修改建表语句。

3. 移除冲突依赖并清理缓存

如果你之前添加了sqlite3_flutter_libs,它可能与sqflite的依赖冲突:

  • 从pubspec.yaml中删除sqlite3_flutter_libs依赖
  • 执行以下命令清理缓存并重新安装依赖:
flutter clean
flutter pub get
  • 卸载设备上的现有APP,重新编译安装。

4. 确认Android设备SQLite版本(仅原生sqflite)

FTS5需要SQLite 3.9.0及以上版本,若你的目标设备系统过旧(如Android 6.0以下),原生SQLite可能不支持。这种情况下,优先使用方案2的sqflite_common_ffi。

内容的提问来源于stack exchange,提问作者ElapsedSoul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:31:00