You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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目录,检查文件是否更新。
      若手动删除后仍加载旧数据,需清理应用的本地缓存(设置-应用-清除缓存)。
  • 添加版本号控制
    给数据库指定版本号,更新数据库时递增版本号,触发更新逻辑:

    SQLite.openDatabase({
      name: 'ChemoDatabase.db',
      createFromLocation: 1,
      version: 2 // 每次更新数据库时修改此版本号
    }, db => {
      // 可在此处理版本升级后的逻辑,如迁移数据
    }, error => console.log('open db error: ', error));
    

内容的提问来源于stack exchange,提问作者Easymoney_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:50:17