问题:我有时会SELECT看到在我执行操作时从我的各种数据库中返回了非常旧的数据( findAll)。
我有一个 VueJS 应用程序,我在其中使用 AxiosJS 调用我的后端 ExpressJS 应用程序,该应用程序使用 Sequelize 连接到几个 (4) SQL Server 数据库。我也在使用 VueJS 开发工具,所以我可以在前端实时看到变量和 Vuex 存储的变化。我还在后端使用 console.log,所以我也可以在那里看到一些东西。
在寻找解决方案时,我发现:
我没有使用交易;我所有的查询都是将结果返回给应用程序的单个查询,所以我不(不应该)遇到提交时间问题;即我更新或添加一行,只有在它返回结果后我才会做一个
SELECTSequelize 保持连接打开,因此旧连接在数据库中显示为“睡眠”;我看到这些确实会随着时间的推移而被重复使用
我在 SQL Server 中使用默认隔离级别,它是READ COMMITTED并且应该返回提交的数据;因为我在等待第一个查询在启动第二个查询之前返回结果,所以它不应该被提交并准备好让我获得最新的值吗?
我看到 SQL Server 可以存储行的旧副本,有时会制作快照,但我认为它们需要更高的隔离级别 - 但我不确定;也许它保留了旧版本?
我一直未能弄清楚如何关闭和重新打开 Sequelize 连接。我想在注销时关闭并重新连接,因为该应用程序仍在选项卡中运行(如果这将解决我的旧数据问题),从而允许某人重新登录并打开所有数据库连接以再次可用。根据可用的文档,我无法弄清楚。
我认为 Sequelize 正在使用旧连接,并且不知何故导致 SELECT 结果过时 - 如果 SQL Server 保留旧版本的行,这更有可能
出于某种原因,如果我注销并硬刷新我的应用程序(CTRL+F5),所有数据都是新鲜的;我不明白为什么会这样。浏览器会坚持什么?请注意,服务器应用程序上的控制台日志始终与前端显示的内容一致。换句话说,如果后端控制台日志过时,则前端过时;如果后端是新鲜的,那么前端也是。
我无法使用 SSMS 或 Postman 复制过时数据的获取
问题:那么当我在前端使用 Axios 并在后端使用 Sequelize 时,我可能会通过哪些方式获取陈旧数据?