应用后 Sqflite 数据丢失 update/upgrade

Sqflite data is lost after app update/upgrade

我正在构建一个使用 sqflite^2.0.2 将数据存储为本地数据库的应用程序。

一切正常,但在更新设备上的应用程序时出现问题:所有数据丢失。一旦升级或重新安装应用程序,数据库似乎就会被删除。 Android 模拟器上的行为相同。

我已经尝试在 AndroidManifest.xml 中添加 android:allowBackup="true",但它仍然无法正常工作,即使 - 如 documentation 所述 -应该备份数据库。

由于数据库结构没有更新,只有实际的 Flutter 应用程序更新,数据库版本应该保持 1 (?).

static Future<Database> init() async {
  WidgetsFlutterBinding.ensureInitialized();

  final database = openDatabase(
    join(await getDatabasesPath(), 'myDatabase.db'),
    onCreate: (db, version) {
      return db.execute(
        'CREATE TABLE myOrders (id TEXT PRIMARY KEY, name TEXT, quant INTEGER)',
      );
    },
    version: 1, 
  );
  return database;
}

上面的代码初始化了我的数据库,join()returns下面的路径:/data/user/0/com.example.myapp/databases/myDatabase.db

不幸的是,这没有帮助:

我错过了什么吗?感谢任何帮助。

问题已解决。

起初,我尝试使用path_provider to be sure the right path was being used everytime for the database. That didn't work, but it was still a good practice for iOS as recommended by sqflite

下一步是将数据库重命名为其他名称,也许不止一个数据库实例 (?)。

然后我删除并重新下载了我的 Android 模拟器,选择了一个 Google Play installed.

最后,我添加了

<application android:allowBackup="true"/>

串成AndroidManifest.xml


我 运行 在所有这些操作之间有 flutter cleanflutter pub get

经过几次尝试,数据没有再丢失了。