database - 将离线 Mysqlite 同步到远程数据库
问题描述
我正在做一个项目,其中一个要求是应用程序在离线模式下工作。所以我创建了一个离线 MySQLite 数据库,它是在线数据库的副本。现在在 android 应用程序中,员工将完成他们的工作,而某些表中的某些行将被更新,或者某些行将被插入,但永远不会被删除。
我使用了“版本”方法,在表格中添加了“版本”列,每次更新一行时,它都会增加版本。
问题出在插入部分。该应用程序是多用户的,如果在应用程序无法再连接到远程数据库之前表中有 5 行(因此应用程序必须使用离线数据库)并且如果用户 1 添加 2 行并且用户 2 也添加 2 行,在他们各自的离线数据库(在不同的设备上)它们都将具有相同的 ID,最初,我想检查远程数据库中的 maxID 和离线 mysqli 数据库中的 maxID 并将所有新行插入在线数据库,但这不起作用。
一旦连接重新上线,任何简单的解决方案如何将新的离线数据库行同步到远程数据库?
解决方案
使用 id 同步数据不是一个好主意
,您应该从您的移动应用程序向服务器发出更新请求,该服务器发送它的上次更新的时间戳(如果您不从离线设计应用程序添加行到远程服务器数据库非常容易)
你应该请求创建或更新的行比你的移动时间戳更新
ps:android的app数据库是SQLite,不知道可以用其他数据库
推荐阅读
- java - 在 Spring 中将 Jade4J 配置为默认模板引擎
- javascript - 查找表中最大的数字
- shell - 在 groovy 中执行 shell 命令会引发“意外字符”错误
- jmeter - 在 Jmeter 中使用动态输入的正则表达式(正则表达式提取器)
- c# - Unity:按特定顺序解析所有已注册类型实例的列表
- java - 尝试在 Jsoup 中加载 URL 时发生了太多重定向
- go - 如何在运行测试之前自动清理 Visual Code 中的 go 缓存?
- haskell - How to hide the mouse cursor in Haskell Gloss
- vue.js - Vue-Router in axios interceptor
- javascript - 如何在 REDOM.JS 中附加元素