From 7912af18ed473e296ccf40a52eabc81b978c8f1b Mon Sep 17 00:00:00 2001 From: "emil.kroymann" Date: Thu, 7 Jan 2010 20:10:47 +0100 Subject: [PATCH] apply Emil Kroymann's patch for Issue 75 --- migrate/changeset/databases/mysql.py | 9 +++++++++ migrate/changeset/schema.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/migrate/changeset/databases/mysql.py b/migrate/changeset/databases/mysql.py index 6655a42..f32ea5f 100644 --- a/migrate/changeset/databases/mysql.py +++ b/migrate/changeset/databases/mysql.py @@ -4,6 +4,7 @@ from migrate.changeset import ansisql, exceptions, SQLA_06 from sqlalchemy.databases import mysql as sa_base +from sqlalchemy import types as sqltypes if not SQLA_06: MySQLSchemaGenerator = sa_base.MySQLSchemaGenerator @@ -23,6 +24,14 @@ class MySQLSchemaChanger(MySQLSchemaGenerator, ansisql.ANSISchemaChanger): def visit_column(self, delta): table = delta.table colspec = self.get_column_specification(delta.result_column) + if delta.result_column.autoincrement: + first = [c for c in table.primary_key.columns + if (c.autoincrement and + isinstance(c.type, sqltypes.Integer) and + not c.foreign_keys)].pop(0) + + if first.name == delta.current_name: + colspec += " AUTO_INCREMENT" old_col_name = self.preparer.quote(delta.current_name, table.quote) self.start_alter_table(table) diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index 9af0f7d..d182825 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -177,7 +177,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem): # Column attributes that can be altered diff_keys = ('name', 'type', 'primary_key', 'nullable', - 'server_onupdate', 'server_default') + 'server_onupdate', 'server_default', 'autoincrement') diffs = dict() __visit_name__ = 'column'