未处理异常:DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database"。更新到 Flutt

Posted

技术标签:

【中文标题】未处理异常:DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database"。更新到 Flutter 2.0 后【英文标题】:Unhandled Exception: DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database". After updating to Flutter 2.0 【发布时间】:2021-07-13 10:13:58 【问题描述】:

我尝试将 Flutter 更新到 2.0.5 版本,并将 Dart 语言从 2.10.4 更新到 2.12 版本,因为从那一刻起我遇到了很多错误。

我尝试了多种方法,包括重新安装 Pods 并返回到以前的 Flutter 版本,但现在我在仅在 ios 中运行时出现错误(而不是在 android 中!)。

如果您能以某种方式帮助我,我将不胜感激。

这是控制台中的错误消息:

在 iPhone 11 上以调试模式启动 lib/main.dart... 正在运行 pod 安装... 运行 Xcode 构建... Xcode 构建完成。 46,1s 等待 iPhone 11 报告其观点... 调试服务监听 ws://127.0.0.1:50334/emMoKYaYe0M=/ws 正在将文件同步到设备 iPhone 11... [VERBOSE-2:ui_dart_state.cc(177)] 未处理的异常:DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database" UserInfo=NSLocalizedDescription=file is not a database) sql 'SELECT * FROM Devices'参数 [] #0 SqfliteSqlCipherDatabaseFactoryImpl.wrapDatabaseException(包:sqflite_sqlcipher/src/factory_sql_cipher_impl.dart:44:9) #1 SqfliteDatabaseMixin.safeInvokeMethod(包:sqflite_common/src/database_mixin.dart:211:15) #2 SqfliteDatabaseMixin.txnRawQuery。 (包:sqflite_common/src/database_mixin.dart:403:36) #3 SqfliteDatabaseMixin.txn 同步。 (包:sqflite_common/src/database_mixin.dart:336:22) #4 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:32:26) #5 SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:332:33) #6 SqfliteDatabaseMixin.txnRawQuery (包:sqflite_common/src/database_mixin.dart:402:12) #7 Sqflit

这是 Flutter 医生的现状:

/Users/Sergio/Development/flutter/bin/flutter doctor --verbose [✓] Flutter (Channel stable, 1.22.5, on macOS 11.1 20C69 darwin-x64, locale it-IT) • Flutter 版本 1.22.5,位于 /Users/Sergio/Development/flutter • 框架修订7891006299(4个月前),2020-12-10 11:54:40 -0800 • 引擎修订版ae90085a84 • Dart 版本 2.10.4

[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.3) • Android SDK 位于 /Users/Sergio/Library/Android/sdk • 平台 android-29,构建工具 29.0.3 • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_242-release-1644-b3-6915495) • 接受所有 Android 许可证。

[✓] Xcode - 为 iOS 和 macOS 开发 (Xcode 12.4) • Xcode 位于 /Applications/Xcode.app/Contents/Developer • Xcode 12.4,内部版本 12D4e • CocoaPods 版本 1.10.1

[✓] Android Studio(4.1 版) • Android Studio 位于 /Applications/Android Studio.app/Contents • 安装了 Flutter 插件 • Dart 插件版本 201.9335 • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_242-release-1644-b3-6915495)

[✓] 已连接设备(2 个可用) • 为 x86(移动)构建的 Android SDK • emulator-5554 • android-x86 • Android 10 (API 29)(模拟器) • iPhone 11(移动) • E3DBA180-42B0-4FBD-9D17-496B53A33A59 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4(模拟器)

• 未发现任何问题!

这是包含在 pubspec.yaml 文件中的内容:

环境: sdk: ">=2.1.0

依赖: 扑: sdk:颤动 sqflite_sqlcipher:^1.1.1 url_launcher:^5.7.10 分组列表:^3.5.0 flappy_search_bar:^1.7.2 syncfusion_flutter_charts:^18.3.35 包信息:^0.4.3 购买颤振:^1.4.0 共享首选项:^0.5.12+4 firebase_core:^0.5.1 firebase_analytics:^6.2.0 持久性底部导航栏:^2.1.0 firebase_messaging:^7.0.3 加载覆盖:^0.2.1 webview_flutter:^1.0.7 flutter_cached_pdfview: ^0.3.5 库比蒂诺图标:^1.0.0 path_provider: ^1.6.14

dev_dependencies: 颤振测试: sdk:颤动

【问题讨论】:

【参考方案1】:

尝试在您的 pod 文件中运行 pod update

【讨论】:

已经尝试过几次运行Pod更新,也Repo Pod更新,删除更新之前的Podfile.lock 我猜 SQLCipher 存在依赖问题,但我不知道如何解决它 只写 sqflite_sqlcipher: 不带任何版本号。也做颤振更新 你能不能给出你做时出现的退出错误pub get@user15690472 当我做 pub get 时没有退出错误。应用程序启动没有问题,尝试打开数据库文件时崩溃

以上是关于未处理异常:DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database"。更新到 Flutt的主要内容,如果未能解决你的问题,请参考以下文章

E/libc++abi:以 google::protobuf::FatalException 类型的未捕获异常终止:

Python 异常处理

Visual Studio C/C++ 数组大小未处理的异常堆栈溢出 [重复]

Elastic beanstalk:构建期间未处理的异常:[Errno 2] 没有这样的文件或目录

未处理的异常: 未能加载文件或程序集

未处理的异常:错误状态:平台不允许使用不安全的 HTTP - usesClearTextTraffic 不起作用