首页 > 解决方案 > python在cog文件中关闭db说它仍在运行,错误

问题描述

我们的不和谐机器人使用 sqlit3 来检索数据,但有时由于流量或错误导致数据库锁定。为了解决这个问题,我们必须复制和粘贴,所以我创建了一个复制粘贴和删除所有旧文件的功能。BUt 即使在关闭连接后它说数据库仍然打开,

def db_lock():
        
        discord.close()
        base_directory = os.getcwd().replace(os.sep , '/')
        original = base_directory+'/discord.db'
        new_file = base_directory+'/discord_locked.db'
        os.rename(original, new_file)
        shutil.copyfile(new_file, orginal)

标签: pythonsqlitediscord

解决方案


肯定有一些程序仍在使用数据库并保持打开状态。在 Windows 上,您可以尝试使用此软件检查其中一个并关闭它: http ://www.nirsoft.net/utils/opened_files_view.html

否则,在 Linux(或 MacOS)中,您可以使用fuser尝试类似的操作:

 $ fuser discord.db

先前命令的输出应该是使用您的数据库的进程的 PID,使其保持打开状态。所以现在你只需要杀死你执行以下命令的进程:

kill -9 PID

其中PID是 fuser 之前返回的那个。


推荐阅读