There are two possible solutions for this issue:
1.) check if we are operating on an empty database
2.) change our upgrade function in a way that if a upgrade script is not found
for X -> Z it tries to run X -> Y -> Z
For 1.) there are two possible ways:
1.a.) check if file already exists before sqlite3.connect() to this file
1.b.) change _get_schema_version() to return -1 if SQLITE_MASTER is empty
I vote for 1.a.) as a fix for this bug, and work on 2.) for the future.
Upgrading database scheme is broken for newly created databases
You received this bug notification because you are a member of Zeitgeist
Framework Team, which is subscribed to Zeitgeist Framework.
Status in Zeitgeist Framework: In Progress
Todays newly created database version 2 broke the upgrade path, we have no
upgrade script for 0 (which means 'no version entry found') to 2. This happens
because no-existing databases do not have such table.
$ ZEITGEIST_DATABASE_PATH=/tmp/dfgdsfsddf ./zeitgeist-daemon
DEBUG:root:Checking for another running instance...
DEBUG:root:No running instances found.
INFO:zeitgeist.sql:Using database: /tmp/dfgdsfsddf
DEBUG:zeitgeist.sql:Schema 'core' not found: no such table: schema_version
INFO:zeitgeist.sql:Upgrading database 'core' from version 0 to 2. This may take
CRITICAL:zeitgeist.sql:Failed to upgrade database 'core' from version 0 to 2:
No module named core_0_2
We have to check if we are operating on a new database.
(Side note: we need tests for upgrades....)
Mailing list: https://launchpad.net/~zeitgeist
Post to : email@example.com
Unsubscribe : https://launchpad.net/~zeitgeist
More help : https://help.launchpad.net/ListHelp