React Native中预填充SQLite数据库更新失效问题求助
React Native SQLite 更新数据库不生效的解决方法
确保删除操作完成后再打开数据库
deleteDatabase是异步操作,直接后续调用openDatabase可能导致删除未完成就加载旧库。将打开数据库的逻辑放在删除成功的回调里:SQLite.deleteDatabase( {name: 'ChemoDatabase.db', location: 1}, () => { console.log('db deleted'); // 确认删除完成后再初始化新数据库 SQLite.openDatabase({name: 'ChemoDatabase.db', createFromLocation: 1}, () => console.log('new database loaded'), error => console.log('open db error: ' + error) ); }, error => console.log('delete db ERROR: ' + error) );检查
createFromLocation路径与资源缓存
确认更新后的db文件已正确替换到www目录,debug模式下Metro可能缓存旧资源,执行npm start -- --reset-cache清除缓存后重启服务。也可以尝试指定完整相对路径:SQLite.openDatabase({ name: 'ChemoDatabase.db', createFromLocation: 'www/ChemoDatabase.db' });验证数据库文件的实际存储位置
- Android:查看
data/data/[你的应用包名]/databases/目录,确认旧db文件已被删除。 - iOS:通过Xcode的文件管理器查看应用沙盒的Documents目录,检查文件是否更新。
若手动删除后仍加载旧数据,需清理应用的本地缓存(设置-应用-清除缓存)。
- Android:查看
添加版本号控制
给数据库指定版本号,更新数据库时递增版本号,触发更新逻辑:SQLite.openDatabase({ name: 'ChemoDatabase.db', createFromLocation: 1, version: 2 // 每次更新数据库时修改此版本号 }, db => { // 可在此处理版本升级后的逻辑,如迁移数据 }, error => console.log('open db error: ', error));
内容的提问来源于stack exchange,提问作者Easymoney_
相关产品推荐
相关产品推荐

