应用后 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 clean
和 flutter pub get
。
经过几次尝试,数据没有再丢失了。
我正在构建一个使用 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 clean
和 flutter pub get
。
经过几次尝试,数据没有再丢失了。