Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unknown error unable to open database file #1113

Open
balki opened this issue Jan 23, 2024 · 1 comment
Open

Unknown error unable to open database file #1113

balki opened this issue Jan 23, 2024 · 1 comment

Comments

@balki
Copy link

balki commented Jan 23, 2024

I was getting below error when trying to sync. vdirsyncer -v DEBUG sync

debug: Already normalized: '/balki/12c9dbdc-3ce6-b970-e9a1-c5c7d234f72a/bd5de934-3aca-4863-bcd0-7d82eb11d189.ics'
error: Unknown error occurred for foobar_calendar/12c9dbdc-3ce6-b970-e9a1-c5c7d234f72a: unable to open database file
error: Use `-vdebug` to see the full traceback.
debug:   File "/usr/lib/python3.11/site-packages/vdirsyncer/cli/tasks.py", line 72, in sync_collection
debug:     await sync.sync(
debug:   File "/usr/lib/python3.11/site-packages/vdirsyncer/sync/__init__.py", line 142, in sync
debug:     with status.transaction():
debug:   File "/usr/lib/python3.11/contextlib.py", line 144, in __exit__
debug:     next(self.gen)
debug:   File "/usr/lib/python3.11/site-packages/vdirsyncer/sync/status.py", line 188, in transaction
debug:     self._c.execute("INSERT INTO status " "SELECT * FROM new_status")

This happens because sqlite library tries to write to a temporary file in /var/tmp/ when trying to execute the above insert statement. In my system (it is a systemd container), /var/tmp/ folder is not writable by regular user even though the permissions are ok. No idea how to fix that (something to do with user namespace).

⬢ [OCI] ❯ mkdir /var/tmp/etilqs_ac938b9762164c3a
mkdir: cannot create directory ‘/var/tmp/etilqs_ac938b9762164c3a’: Value too large for defined data type

Workaround

SQLITE_TMPDIR=/tmp vdirsyncer sync

This tells sqlite to use /tmp/ instead of /var/tmp and it works fine.


This is not a bug in vdirsyncer but just a quirk with my system and sqlite library. Adding here so it will be helpful for anyone who faces it as it was not easy to debug.

May be good to add a note in 'Trouble shooting' section of the docs.

@WhyNotHugo
Copy link
Member

This sounds like a bug in how sqlite is configure when it is built. It might be worth reporting to your distribution; if /var/tmp doesn't exist but sqlite tries to use that by default, it should definitely be fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants