- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个经常崩溃的程序 (Zotero),它的 SQLite 数据库被锁定并且无法被重新启动的程序使用,除非我重新启动(我真的想避免)。所以这不起作用(在我的例子中使用通用名称 db.sqlite
代替实际文件 zotero.sqlite
):
sqlite3 db.sqlite
sqlite> .backup main backup.sqlite
Error: database is locked
基于答案 here ,我试过:
echo ".dump" | sqlite3 db.sqlite | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
db.sqlite2
是 0KB,所以这显然不起作用。灵感来自 another thread ,我也试过了
echo '.dump' | sqlite3 db.sqlite > db.dump
cat db.dump | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
这导致 db.sqlite2
的文件大小略小于 db.sqlite
,并且 Zotero(需要数据库的文件)无法识别其内容。
所以这似乎是一种非常蛮力的方法,但有效:
cp -pv db.sqlite db.sqlite2
rm -f db.sqlite
mv db.sqlite2 db.sqlite
我想知道这个解决方案是否有任何缺点以及为什么在这个解决方案之前提出其他方法。
最佳答案
可能是为了事务控制,zotero使用了table based locking来防止并发访问时数据库不一致。当一个用户使用数据库时,它会锁定表,这样只有他们才能使用它,并防止他们看到数据库处于不一致的状态。然而,当它崩溃时,它并没有释放这些锁。
在一个设置良好的数据库中,崩溃时应该回滚(撤消)事务并释放锁,以防止数据处于不一致状态或表被锁定而您必须手动释放它们。
我在互联网上读到,将数据库存储在网络文件系统上会干扰 SQLites 锁定机制,通过将数据库位置更改为非网络位置,您应该能够避免这些问题,除非它在其他地方。
如果它在其他地方,我会建议复制您的数据库并使用 zotero 数据库修复工具来尝试识别可能导致此问题的设置等中的任何错误并修复它们:https://www.zotero.org/utils/dbfix/
希望对您有所帮助。
关于sqlite - 有效地解锁 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419654/
我注意到,当我打开我的应用程序并等待足够长的时间让我的手机自行锁定时,当我解锁它时,当前内容 View 未处于全屏模式。它不显示顶部栏,而是全黑线...如果我去另一个 Activity 并返回它再次修
我必须处理设计限制(依赖性问题)以不对互斥体使用范围保护。 示例代码: template class Test { MutexType myMutex; public: void f(
我正在尝试像这样使 my_class 线程安全。 class my_class { const std::vector& get_data() const { //lock so that
我想让手机在手机被锁定(锁定 = 键盘被锁定)并且用户想要解锁时询问一个问题(来自数据库)。如果答案正确,则手机解锁,否则手机会询问另一个问题。 我不知道如何检测解锁并在需要时解锁/锁定手机。 请帮帮
我有一个对 accept() 的阻塞调用。我从另一个线程关闭套接字,希望它能解除对 accept() 调用的阻塞,它确实如此,但我有一个情况,它没有:例如线程A进入accept(),线程B关闭sock
我在 C# 中有一个可以从多个线程调用多次的函数,我希望它只执行一次,所以我想到了这个: class MyClass { bool done = false; public void
锁定数据库的一个表 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别
我已经使用腻子在我的 ec2 实例上安装了 jenkins,从我的 Windows 系统 当我尝试通过网络访问 jenkins 时,我使用/var/lib/jenkins/secrets/initia
每次我打开我的电脑并尝试连接到 HR 数据库时,都会弹出一个错误提示被阻止,然后我转到 SQLPLUS 并以 SYSDBA 身份登录,并执行以下脚本: 我的问题是,我是否总是必须这样做?有什么办法让它
所以我的手机在引导加载程序中,我想解锁它 所以我输入 fastboot oem unlock 我明白了 D:\Minimal ADB and Fastboot>fastboot oem unlock
在我的应用程序中,我希望即使在应用程序终止后我的应用程序仍处于事件状态。我希望当“滑动解锁”我的应用程序启动时。 有可能吗?我怎样才能在不越狱的情况下做到这一点...... 这是为用户提供便利的功能。
即使我的 iPhone 使用电缆连接并解锁,它也会显示警告“Xcode 9.3 无法在 iPhone 上启动应用程序,因为设备已锁定”。我不知道该怎么办?有人对此有适当的解决方案吗?请 最佳答案 只需
我看到一个非常奇怪的行为,我试图了解它是否是这样设计的,或者只是没有从我的应用程序中正确处理。 我的应用程序以 UIAlertViews 的形式发送推送通知。当设备未锁定时,UIAlertViews
该文档说,从一个线程进行锁定并从另一个rwlock进行解锁会导致未定义的行为。我有一个数组和两个线程,一个分配它,一个释放它,这是一个周期发生的,也有一些线程在其中进行读/写操作,但是它们从不重叠,因
解锁 Oracle 表有哪些不同的技术? 我尝试过的。 获取锁定表的对象ID: SELECT object_id FROM dba_objects WHERE object_name='YOUR TA
我运行@apxchpwd.sql并用这个脚本给帐户倒霉 alter session set current_schema = APEX_050100; declare l_workspace_id
我想在 Chrome 扩展程序中提供一些高级功能。这个想法是,只要用户通过 PayPal 捐赠了一定金额,就可以使用后者的附加功能。 目前我的策略是这样的: 1/。用户填写 PayPal 表格。 2/
我构建了一个包含 IAP(应用内购买)的应用。该应用程序是使用 UINavigationController 构建的。当用户决定购买内容时,解锁功能会解锁该内容。然后,用户点击后退按钮,他们将返回主菜
我有一个只能通过静态方法从外部访问的类。然后,这些静态方法创建该类的一个对象以在该方法中使用,然后它们返回并且该对象可能被销毁。该类是几个配置文件的 getter/setter,现在我需要在对配置文件
我可以在超出 scoped_lock 范围之前解锁互斥锁吗?我怎么能那样做? {boost::mutex::scoped_lock lock(mutex); if(conditionaA) {
我是一名优秀的程序员,十分优秀!