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
相关产品推荐
相关产品推荐

