August 4, 2016

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でデータを追加したり消したりするとゴミが溜まってくるそうで、それを削除出来るとのことです。 データベースが大きくなった時に活躍しそうなので、ついでにメモしておきます。

© gepuro 2013