gpt4 book ai didi

python - 我偶尔会收到此错误 : sqlite3. OperationalError:无法打开数据库文件

转载 作者:行者123 更新时间:2023-11-28 22:02:50 24 4
gpt4 key购买 nike

这发生在 python 2.6.6,sqlite3 上。我有一个使用 sqlite 的数据库类。以下是其初始化的一部分。

def _init_db(self):
"init the database tables and indices"
print '\n'.join(DROP_TABLES[0:1])
print '\n'.join(CREATE_TABLES[0:1])
print '\n'.join(CREATE_INDEXES[0:1])
print '\n'.join(CREATE_TRIGGERS[0:1])
for query in DROP_TABLES:
self.connection.execute(query)
# self.connection.commit()
for query in CREATE_TABLES:
self.connection.execute(query)
# self.connection.commit()
for query in CREATE_INDEXES:
self.connection.execute(query)
# self.connection.commit()
for query in CREATE_TRIGGERS:
self.connection.execute(query)
self.connection.commit()

这是查询的打印输出。 (在我看来不是很重要,这里是为了完整性)

DROP TABLE IF EXISTS graph_T 

CREATE TABLE IF NOT EXISTS graph_T
(v1 int,
v2 int,
step_start int,
step_end int DEFAULT 2147483647,
value int DEFAULT 1,
path_kind int DEFAULT 0,
path_id long,
partial_path_id long)

CREATE INDEX IF NOT EXISTS idxgraph_T
ON graph_T(v1,v2)

CREATE TRIGGER IF NOT EXISTS trig_graph_T_path_id
AFTER INSERT ON graph_T
BEGIN
UPDATE graph_T SET
path_id = (10000 * 10000 * max(new.v1, new.v2) +
10000 * min(new.v1, new.v2) + 0 ) ,
partial_path_id = 10000 * 10000 * max(new.v1, new.v2) +
10000 * min(new.v1, new.v2)
WHERE rowid = new.rowid;
END;

我收到 sqlite3.OperationalError: unable to open database file on one of the self.connection.execute 行。有时是第三个或第四个(它也发生在我程序的其他地方)。

我在 Windows 上工作。我不确定为什么会这样以及我做错了什么。非常感谢任何建议。

更多信息(由于提出问题):- 我没有使用并发访问。没有线程或任何类似的东西。

edit- More info:我在所有 connection.execute 行上添加了定时重试,它通常会失败一两次,然后就可以正常工作了。我猜测当执行命令返回时,数据可能实际上没有写入磁盘。

最佳答案

我的直觉告诉我,一定是文件系统中发生了一些可疑的事情,而不是软件中。也许是其中之一:

  • 备份脚本正在临时移动/重命名文件或父文件夹
  • 文件系统看似“本地”,但实际上是一个 SAN,并且存在间歇性问题
  • 其他面向文件系统的内核模块,例如透明加密,正在干扰 SQLite 系统调用
  • 入侵检测软件正在干扰 SQLite 系统调用
  • 另一个用户在您不知情的情况下打开文件进行阅读
  • 这是一种病毒:-)

关于python - 我偶尔会收到此错误 : sqlite3. OperationalError:无法打开数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10573688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com