SQLAlchemy的“缓存”问题导致的BUG】的更多相关文章

问题描述: 最近做项目,遇到一个问题,两个项目操作同一个数据库,其中A项目用的pymysql链接操作数据库,B项目用的sqlalchemy,当我请求B项目中的一个接口,会通知A项目操作数据库,然后返回结果后,B项目再进行下一个操作(这两步是在一个接口中),但是后来发现,A成功添加了数据后,在同一个请求中,B进行查询数据时,查询不到刚刚更新的数据,后来想了想可能是存在缓存问题,缓存问题可以参考下面这个文章 参考:https://www.jianshu.com/p/c0a8275cce99 解决问题…
SQLAlchemy 对象缓存和刷新 SQLAlchemy 带有对象缓存机制,在重复查询相同的对象时,直接先查询本地的缓存,而不需要从数据库加载数据. 在每个 model 对象的内部,SQLAlchemy 在对象的 __dict__ 中维护对象的状态.它往 __dict__ 中加入对象的状态 _sa_instance_state,通过这个值来跟踪对象._sa_instance_state 是 sqlalchemy.orm.state.InstanceState 类型,里面保存这个对象的 sess…
对 Python 语法不够了解导致的 bug. `in` '20' in '11264,6144,4096,3072,2048,1024,300,30' Out[7]: True a_list = '11264,6144,4096,3072,2048,1024,300,30'.split(',') a_list Out[10]: ['11264', '6144', '4096', '3072', '2048', '1024', '300', '30'] '20' in a_list Out[11…
MySQL中char(36)被认为是GUID导致的BUG及解决方案 有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). Stack Trace:    在 System.Guid..ctor(String g)    在 MySql.Data.Types.MySqlGuid.MySql.Data.Types.IMySqlV…
最近的工作中,遇到一个由于操作快慢不同导致的bug,原因是,操作慢的时候程序接收到了停止操作,继续处理正确,而快速操作的时候程序来不及处理操作停止的动作,导致需要传入的数据值已经改变,程序报错.这种缺陷以前从没遇到过,记录一下,提供一种新的测试思路. 请慢慢移动………
引言 在开发中台过程中 我们的原型中有很多表单,antd有表单组件,但是粒度比较细,就单纯组件而言,无可厚非,但是在开发过程中,可能会造成代码不够聚合,有些表单公共逻辑无法提取,copy paste比较多,所以可以加以封装,搞一个兼容性和扩展性都契合项目本身的组件. 主要思路 我简单查阅了一番资料,参考了一下别人的封装方式,决定以Col和FormItem作为基本单元,进行表单的搭建,主要原因 可以将FormItem的信息和Col的信息以对象方式传入,这样我们可以更加专注于组件的包含的信息 减少C…
https://www.jianshu.com/p/c0a8275cce99 0.4792017.11.22 00:07:04字数 1631阅读 6493 问题描述 最近在排查一个问题,为了方便说明,我们假设现在有如下一个API: @app.route("/sqlalchemy/test", methods=['GET']) def sqlalchemy_test_api(): data = {} # 获取商品价格 product = Product.query.get(1) data…
macOS 升级后导致 dart bug macOS 10.15.5 $ demo_app git:(master) flutter doctor # /Users/xgqfrms-mbp/Documents/Flutter/flutter/bin/flutter: line 183: 22424 Killed: 9 "$DART" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@" zsh https://www.…
bug描述 有一张数据库表存储的是 值日员工信息,有时候可能一次性录入1个月的数据.有时候也可能隔了很多天没有录入数据,也就是说这个录数据不是很规律. bug现象:测试人员发现,网站上三亚地区能正常显示当天值日员工信息,但是珠海地区却不能正确显示当天值日员工信息.而数据库上实际是有珠海地区值日员工信息的.更诡异的是在本地启动网站的时候珠海和三亚地区当天值日员工信息都能正常显示. 原因是因为,代码里面用了缓存,这个缓存持续时间6小时.三亚地区人员信息是早上9点录入的,珠海是下午3点录入的.当有人查…
在使用iframe时,已有页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果未刷新,需要清除缓存后才刷新. 解决方案: var fresh_link=new Date().getTime();//获取当前时间戳,因为该时间戳唯一,将其加到跳转的iframe嵌套页面那,以防止iframe子页面访问过后遗留的缓存 window.open("link.html?+'fresh_link'", "_self");…
在没遇到这个问题之前,我对JVM的解释模式与编译模式的代码性能相差有多大,是没有感觉的,只是觉得编译模式会比解释模式性能好那么一点点吧. 但是经历过这次以后,让我对JVM的即时编译产生了兴趣.先来看看这个问题的背景: 大概是4年前,我的团队里有一个PM找我说他们遇到一个很奇怪的问题,在性能测试的时候,有几个不同的测试场景混合在一起进行压力测试,有时会出现测试几十几分钟以后性能会下降的很厉害,一旦出现性能下降以后,性能再也回不到刚开始测试的水平.奇怪的是:它不是必现的,而且如果只是某1个或者2个场…
问题描述: 最近将IOS书城容器化,切换流量后.正常的业务测试了一般,都没发现问题.线上的错误监控系统也没有报警,以为迁移工作又告一段落了,暗暗的松了一口气.紧接着,报警邮件来了,查看发现是一个苹果支付相关接口调用的curl错误,错误码为"56",错误描述为:“Failure with receiving network data”接收网络数据失败. 机器 : 192.168.1.1当前URL : /xxx/recharge/apple?xxxxxxxxxxxxx接口URL : htt…
二维数据track的定义: byte[][] track = new byte[10][10]; 本意:判断track[trackY][trackX]的值是否为零,以及trackX是否小于10. 带BUG的代码: if ((track[trackY][trackX] == 0) && ((trackX) < 10)) { track[trackY][trackX] = 1; trackX++; } 执行这段代码,导致IDE抛出数组索引越界的异常:Exception in thread…
问题: 调试阶段,程序已经更新,但是浏览器没有出现新效果! 1.以为是谷歌浏览器缓存导致,解决:设置--高级设置--隐私设置--清除浏览器缓存 一小时过去了,但还是没有更新,怎么刷新都没用!! 2. 突然想到 thinkphp 自带的缓存功能!!! 马上删除 RunTime文件夹. 问题解决.…
环境信息:  linux 6.1 + oracle11.2.0.3 RAC     问题现象: 学校晚上6点选课,人数大概有3000,7点时,数据库报错如下(数据库到6点多还是可以连接的),数据库hung住了. Tue Dec 16 18:00:33 2014Dumping diagnostic data in directory=[cdmp_20141216180033], requested by (instance=2, osid=24917 (M001)), summary=[incid…
早期系统有个缺陷,调用js时少提交一个参数,导致该参数一直是undefined,但是不会引起bug. 对系统进行优化后,这个参数变成了必要的,然后代码一直会走else,undefined值明显不是一个合法值,却仍然走else,导致了奇怪的错误!…
bug前提条件 当模块比較多.头文件较多,某个结构体类型会在当前模块中又一次声明进而引用其成员,而不直接包括其它模块的头文件. 这种优点是不引入不须要的类型声明到此模块.头文件包括的交叉:坏处是,添加了bug的几率,耦合太大!比方以下一种情况发生而导致bug: 已知两个模块A和B.同一个结构类型struct node在两个模块中分别声明.当中B模块无意或者有意调整了结构类型中的某些域.那么这个时候.若B模块中引用A模块中此类型实例然后訪问成员变量,就会引发bug! 例如以下重现演示样例 bug重…
Laya2.1.1.1 参考: 预设使用 Laya给出了相同模块,逻辑代码也相同情况下,使用页面嵌+runtime的使用方案.但是该方案和Laya.Scene.open,Laya.Scene.destroy等有冲突,会导致bug. 当参考使用Laya的教程,拖入一个scene到另一个scene中使用. 假设当前页面是主页HomeScene.scene, 主页里嵌套了10个其他的UI也是TestUI.scene的页面. 在使用Laya.Scene.open(HomeScene)后,再使用Laya.…
今天查询记录时,发现重复查询结果时出现空记录的情况 查看控制台信息,只有红色框选部分有进行查询数据,而其他没有.然而上图可看出有两条数据是能展现出来的,故有可能是mybatis缓存命中的. 因此在mapper文件中加入flushCache="true" useCache="false" <select id="querySuppliers" flushCache="true" useCache="false&q…
一:背景 1. 讲故事 上个月底,有位朋友微信找到我,说他的程序 多线程处理 RabbitMQ 时过慢,帮忙分析下什么原因,截图如下: 这问题抛出来,有点懵逼,没说CPU爆高,也没说内存泄漏,也没说程序卡死...鬼知道为啥 Rabbitmq 处理过慢哈 . 既然没有一个缘由,那就往 freeze 这个方向去找吧,上 windbg 说话. 二:Windbg 分析 1. 寻找 freeze 原因 处理过慢原因有很多,可能是干活的人少了,也可能这些人摸鱼去了,总之工作不饱和,接下来看看这帮人有没有摸鱼…
NBB_PUT_SHORT 这个宏是按char* 类型算指针的实际工作中,没有注意这一点,输入指针类型 强转为了 SHORT* 导致 填充的内容错误 这是第一次在工作中遇到 指针类型相关的问题值得记录一笔 // ConsoleApplication1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h>…
<?php $arr = array('a', 'b', 'c'); foreach($arr as &$v) {} foreach($arr as $v) {} var_dump($arr); /* 结果为: array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" } */ //第一个foreach用引用赋值的方式将数…
其实只是第一次查询了数据库,其他的时候都使用的是缓存,所以有时候,因为这个特性会出错,所以需要刷新对象或者使对象过期 参考链接:http://www.cnblogs.com/fengyc/p/5369301.html…
公司开发出来的系统,由于各现场oracle数据库版本有10.2.0.4.11.2.0.1.11.2.0.3.11.2.0.4: 进而会导致版本不一导致错误问题.下面列举2个: 1.wm_concat 函数问题 由于本地开发.测试环境都是10.2.0.4,该函数运行正常,后来问题现场版本是11g,导致该函数报错. 后来经过排查,wm_concat这个函数中10.2.0.4之前返回都是varchar2类型,到10.2.0.5及以上版本返回为clob类型, 而返回的临时clob类型会时临时表空间一直增…
有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatExceptionGUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).Stack Trace:   在 System.Guid..ctor(String g)   在 MySql.Data.Types.MySqlGuid.MySql.Data.Types.IMySqlValue.ReadValue(MySqlPacket packet, Int…
一直知道使用ajax的时候,有的时候会出现数据缓存的问题,当时也没有深究,就是所有的简单粗暴的全部加上cache:false,或者使用在url处加上随机时间函数 今天无意间看见了为什么会出现缓存的原因记录下 注:通过AJAX请求后台时,当参数相同,IE浏览器会从缓存中取值而非从重新请求服务器.其他使用非IE内核的浏览器并无此问题. 在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱, 即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会…
在VS中打开您遇到问题的解决方案. 转到工具> NuGet包管理器>包管理器设置 - >常规,然后点击“清除所有NuGet缓存” 这应该返回一个错误,因为你有一个项目打开,但如果没有,那么跳到步骤:6 不要关闭解决方案,但打开“运行”(Windows键+ R)并键入“cmd”并运行以下命令:清除本地文件夹 - Microsoft Docs dotnet nuget locals http-cache --clear dotnet nuget locals global-packages…
如题,在对同一个Context连续进行相同条件的查询时,会触发EFCore的缓存机制,如果这个过程中数据发生了变化,则会出现错误. 例如:有两个Context实例,一个负责查询,一个负责增删改, A_Context查询了数据A,而B_Context之后修改了数据A,当A_Context再次以相同条件查询数据A时,由于缓存的影响,将继续查询到未修改的结果. 因此,可以通过清除指定数据的缓存的方法解决(也可以全局禁用缓存.或禁用某个实体的缓存), 常见的是AsNoTracking()方法, 但由于使…
定义了一个宏定义形式的"函数": #define  SUM8(YY)\ {\ int Y = YY>>2;\ ...\ } 然后使用的时候,传入了一个同名的变量Y: int  Y = Ywin[x]; SUM8(Y) 本意是想展开成int Y = Ywin[x]>>2; 但实际上#define只是把参数名(YY)替换,与函数形式不同,其实展开的结果变成了: int Y = Ywin[x]; { int Y = Y>>2;//仅仅把YY替换成参数Y }…
前几天帮朋友写一个页面,今天在IE8下面发现一个很奇葩的问题,给a标签添加了float:left之后a标签内的图片不显示了,去掉float:left之后就能正常显示. 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> img{ max-width:100%; width:200px; border…