go-sqlite3 “database is locked”问题解决方案_sqlite3 database is locked-程序员宅基地

技术标签: sqlite  数据库死锁  go  业务  

1 背景

rds创建集群后进行启动或者停止操作时,会造成sqlite的写入产生死锁,无法进行后续的写入。

2 问题

sqlite3数据库在写入操作时,如果多路同时写入可能会造成“database is locked”的死锁问题。

3 测试

进行单元测试,在测试文件创建一个db服务,起1000个goroutine向nerv.db中不停地写入数据,在写入数据的同时对数据库中进行查询操作,会出现2种情况:

数据库报“Error: database is locked”,程序无影响继续写入数据;
数据库查询成功,程序报:
time=“2019-09-09T11:18:02+08:00” level=error msg=“failed to save app. path=iy903,err:database is locked” file=“repository/app_repository.go:26”
Register error. failed to save. err:database is locked

4 解决方案

4.1 添加读写锁

在进行sqlite的写操作的函数中加入读写锁,进行测试。

4.2 添加到DSN: cache=shared

在config.json文件db/url中更改为

“…/data/nerv.db?cache=shared”,测试报死锁错误,排除。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43851310/article/details/100709797

智能推荐

COCO数据集-语义分割2_coco格式数据集转成语义分割-程序员宅基地

文章浏览阅读7.2k次。要使用COCO数据分割数据集,先要配置API,参见我的上一篇博客我对COCO数据集的一些理解:图片都是一样的,annotations不一样(就是包含注释信息的json文件),有captions,instances,person_keypoints,stuff四大类,每一类都分别包含train和val。我们常用的三个分别是instances——实例分割person_keypoints——关..._coco格式数据集转成语义分割

thinkphp5.0.23-程序员宅基地

文章浏览阅读1.6k次。thinkphp 5.0.23远程代码执行_thinkphp5.0.23

prometheus 监控单机环境安装记录_eureka exporter-程序员宅基地

文章浏览阅读2.7k次。环境虚拟机: VirtualBox-6.1.14,单核cpu,4G内存虚拟机OS:CentOS Linux release 7.7.1908 (Core)安装软件:prometheus-2.21.0.linux-amd64.tar.gznode_exporter-1.0.1.linux-amd64.tar.gzalertmanager-0.21.0.linux-amd64.tar.gzGrafana操作用户:root一、裸机安装Prometheus Server1、下载安装# cu._eureka exporter

怎么样利用激光雷达检测车道线?这上面提供了4个方法---凯利讯半导体_复杂光线条件下的车道线提取-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏15次。通过理论分析和实验验证可知一二两层返回的信息主要包括路面、车道线、少量障碍物和边界数据;三四两层主要返回道路边界、障碍物和少量路表信息,所以在特征种子点提取阶段需要重点分析一二两层的雷达数据,这部分数据中对于车道线检测最大的干扰在于路面,提取车道线种子点特征的重点就是分离车道线特征与路面特征。  基于视觉系统的车道线检测有诸多缺陷。  首先,视觉系统对背景光线很敏感,诸如阳光强烈的林荫道,_复杂光线条件下的车道线提取

基于“飞桨”的深度学习智能车_基于飞浆的智慧停车系统-程序员宅基地

文章浏览阅读4.2k次,点赞6次,收藏68次。本文作者:吴东昱,北京钢铁侠科技深度学习算法工程师前言我在观察历届智能车竞赛以及教学实验中发现,采用传统视觉算法的视觉智能车只能在特定赛道中行驶,一旦赛道环境改变,必须修改大量的代码才能运行。算法适应性差是制约智能车场景化适配的重要因素。而"AI智能车"借助深度学习算法,通过真实数据采集到模型新训练恰恰能够解决这一问题。基于飞桨平台,我们快速研制出了"无人驾驶智能车",已经实现了道路检测..._基于飞浆的智慧停车系统

瑞芯微RK1808开发板之进入系统_rk_evb_rk1808-程序员宅基地

文章浏览阅读8.3k次。参照RK1808 EVB用户指南_V10_20181226.pdf用户指南配置。文档获取地址https://github.com/rockchip-linux/docs/tree/master/SoC%20platform%20related/RK1808。所需要的软件为瑞芯微驱动助手(Release_DriverAssitant)和串口配置软件SecureCRT和adb.exe。 我的下载资源有..._rk_evb_rk1808

随便推点

Python交互式数据分析报告框架:Dash-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏22次。译者序原文于2017年6月21日发布,时过半载,将这篇既不是教程,也不是新闻的产品发布稿做了一番翻译,为何?只因去年下半年的时候,用R语言的博哥和龙少有Shiny这样的框架可以开发交互式整合Web数据分析报告,让我这个成天鼓吹用Python做数据分析的人眼馋不已。当时找了很久,试用了包括Bokeh、mpld3、Highcharts,以及键冬同学(Python中文社区专栏作者,GitHub开源项目P_dash plotly 交叉过滤 联动

6.4-程序员宅基地

文章浏览阅读210次。#include using namespace std; class Shape {public: virtual double area() const =0; }; class Circle:public Shape {public: Circle(double r):radius(r){} virtual double area() const {r

可图性判定_图序列可图判定 c++-程序员宅基地

文章浏览阅读155次。Degree Sequence of Graph GTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 220 Accepted Submission(s): 128Problem DescriptionWang Haiyang is a strong and optimistic Chinese youngster. Although b_图序列可图判定 c++

ubuntu下安装anaconda3时配置环境变量_anaconda3 ubuntu 没有yes-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏4次。因为装过几次anaconda3,在装的过程中在做其他事,导致选择环境变量时没选到yes(默认为no?),而由系统自动配置没将anaconda3添加到环境变量中.所以需要手动将anaconda3添加到环境变量中1 在终端输入:sudo gedit ~/.bashrc2末尾输入export PATH="/home/xy/anaconda3/install/bin:$PATH"(加粗部分替换成自己安装a..._anaconda3 ubuntu 没有yes

Xcode打包生成ipa四个选项的具体区别_xcode打包 enterprise跟adhoc区别-程序员宅基地

文章浏览阅读3.4k次。1. Save for iOS App Store Deployment 保存到本地 准备上传App Store 或者在越狱的iOS设备上使用2. Save for Ad Hoc Deployment 苹果的官方解释是:To distribute your app to users with designated devices, select “Save for Ad_xcode打包 enterprise跟adhoc区别

Linux的命令格式_linux 命令 风格-程序员宅基地

文章浏览阅读632次。Linux的命令格式Linux的命令行扩展:`` 和$()Linux的括号扩展:{}_linux 命令 风格

推荐文章

热门文章

相关标签