Code review comment for lp:~stefanor/ibid/upgradeable-db-schema

Revision history for this message
Stefano Rivera (stefanor) wrote :

To enable schema upgrades on an existing database, you'll have to do something like:

CREATE TABLE schema (
  id INTEGER NOT NULL,
  "table" VARCHAR(32) NOT NULL,
  version INTEGER NOT NULL,
  PRIMARY KEY (id),
  UNIQUE ("table")
);
INSERT INTO schema (id, "table", version) VALUES (1, "account_attributes", 1);
INSERT INTO schema (id, "table", version) VALUES (2, "accounts", 1);
INSERT INTO schema (id, "table", version) VALUES (3, "credentials", 1);
INSERT INTO schema (id, "table", version) VALUES (4, "factoid_names", 1);
INSERT INTO schema (id, "table", version) VALUES (5, "factoid_values", 1);
INSERT INTO schema (id, "table", version) VALUES (6, "factoids", 1);
INSERT INTO schema (id, "table", version) VALUES (7, "feeds", 1);
INSERT INTO schema (id, "table", version) VALUES (8, "identities", 1);
INSERT INTO schema (id, "table", version) VALUES (9, "karma", 1);
INSERT INTO schema (id, "table", version) VALUES (10, "memos", 1);
INSERT INTO schema (id, "table", version) VALUES (11, "permissions", 1);
INSERT INTO schema (id, "table", version) VALUES (12, "seen", 1);
INSERT INTO schema (id, "table", version) VALUES (13, "schema", 1);
INSERT INTO schema (id, "table", version) VALUES (14, "urls", 1);

Also, Known issue to examine tomorrow: Doesn't work in jaunty:
Traceback (most recent call last):
  File "scripts/ibid-setup", line 67, in <module>
    upgrade_schemas(Session)
  File "/home/stefanor/projects/ibid/tibid/ibid/models.py", line 374, in upgrade_schemas
    table.versioned_schema.upgrade_schema(sessionmaker)
  File "/home/stefanor/projects/ibid/tibid/ibid/models.py", line 87, in upgrade_schema
    eval('self.upgrade_%i_to_%i' % (version - 1, version))()
  File "/home/stefanor/projects/ibid/tibid/ibid/plugins/karma.py", line 27, in upgrade_1_to_2
    self.alter_column(Column('subject', Unicode(64), unique=True, nullable=False), length_only=True)
  File "/home/stefanor/projects/ibid/tibid/ibid/models.py", line 161, in alter_column
    if session.bind.dialect.name == 'sqlite':
AttributeError: 'SQLiteDialect' object has no attribute 'name'

« Back to merge proposal