> Altering tables is slightly more laborious than in MySQL because the > ADD COLUMN syntax was only added in recent versions, so you have > to copy and recreate tables. Is that the way to also deal with dropping columns? Would the right approach be to simply upon start-up read the affected tables, drop the old one, recreate the new ones and then write the (massaged) data back? I understand that Rails' ActiveRecord does something similar for its migrations. Have you had occasion to use it (with and without migrations) over SQLite? > Code will break if you > SELECT columns that don't exist or if you assume that you're getting a > string when you're fetching a NULL cell. I guess that can be managed with a 'version' fields plus a set of migrations for db upgrades, right? As for programming defensively - I think I'd rather program paranoidally :-) One of the problems I experienced with madeleine is indeed in changes between revisions of the software. That's why I'm trying to find out as much as I can before committing to a backend change that'll prove inadequate. Cheers, Assaph