gepuro.net
gepulog

データ分析エンジニアによる備忘録的ブログ

SQLite3をPythonから使っていたら「sqlite3.OperationalError: database or disk is full」というエラーが出た

タイトルの通りで頭を抱えていました。

Bashで

$ df -h

を実行してもディスクは溢れていなかったのです。

ググってみるとSQLITE3 VACUUM, “database or disk is full”という人がいたので覗いたら解決しました。

conn = sqlite3.connect("data.db")
cur = self.conn.cursor()
cur.execute("""
    pragma temp_store_directory='/tmp'
    """)
conn.commit()

のようにして、一時ディレクトリを指定したら動くようになりました。 デフォルトでは、どこに持ってるのだろうか?そこまでは調べていません。

また、

vacuum;

というのも覚えました。

SQLite3でデータを追加したり消したりするとゴミが溜まってくるそうで、それを削除出来るとのことです。

データベースが大きくなった時に活躍しそうなので、ついでにメモしておきます。


似てる記事

似てない記事