在docker中使用Sqlite3和SqlAlchemy时出现磁盘I / O错误

时间:2015-09-11 22:10:20

标签: python sqlite sqlalchemy docker

我有一个烧瓶应用程序,它创建一个sqlite数据库来加载测试的夹具。当我在osx中​​运行pytest时,没有问题。但是,当我设置PRAGMA journal_mode = WAL'在ubuntu 14.04 docker容器中,我得到了这个:

disk I/O error
Traceback (most recent call last):
  File "/tmp/my_app/util/sqlalchemy_helpers.py", line 23, in pragma_journalmode_wal
    cursor.execute('PRAGMA journal_mode=WAL')
OperationalError: disk I/O error 

sqlite db文件被写入tmp中的文件夹,该文件夹是使用python" tempfile.mkdtemp"动态创建的。功能。即使测试以root身份运行(因为docker),我仍然确保该文件夹具有完整的读/写/执行权限。我确认/ tmp上还有足够的空间。我有测试代码,用于创建,修改和删除数据库文件夹中的文件,并成功通过。

我似乎无法找到一种方法来获取错误代码或更好地解释失败的原因。我有什么想法可以更好地调试问题? Docker容器会出现问题吗?

1 个答案:

答案 0 :(得分:0)

当我重新创建sqlite3数据库时,我现在遇到类似的问题:

  1. 已删除database.sqlite3
  2. 创建了database.sqlite3
  3. 设置权限。
  4. 发生错误。
  5. 经过一连串的弄清楚,我也有database.sqlite3-shmdatabase.sqlite3-wal
  6. 删除了database.sqlite3-shmdatabase.sqlite3-wal

一切恢复正常。