Как избежать операторов DROP DEFAULT при первом запуске Doctrine 2 Migrations diff?

У меня была существующая база данных PostgreSQL с таблицей, созданной следующим образом:

CREATE TABLE product (id SERIAL PRIMARY KEY, name VARCHAR(100) DEFAULT NULL)

Эта таблица описана в файле YML Doctrine2 в рамках проекта Symfony2 :

Acme\DemoBundle\Entity\Product:
    type: entity
    table: product
    fields:
        id:
            id: true
            type: integer
            nullable: false
            generator:
                strategy: SEQUENCE
        name:
            type: string
            length: 100
            nullable: true

. Когда я впервые запускаю задачу сравнения Doctrine Migrations, я должен получить файл версии без данных в методах upи down. Но вместо этого я получаю вот это:

//...

class Version20120807125808 extends AbstractMigration
{
    public function up(Schema $schema)
    {
        // this up() migration is autogenerated, please modify it to your needs
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "postgresql");

        $this->addSql("ALTER TABLE product ALTER id DROP DEFAULT");
    }

    public function down(Schema $schema)
    {
        // this down() migration is autogenerated, please modify it to your needs
        $this->abortIf($this->connection->getDatabasePlatform()->getName() != "postgresql");

        $this->addSql("CREATE SEQUENCE product_id_seq");
        $this->addSql("SELECT setval('product_id_seq', (SELECT MAX(id) FROM product))");
        $this->addSql("ALTER TABLE product ALTER id SET DEFAULT nextval('product_id_seq')");
    }
}

Почему обнаруживаются различия? Как я могу этого избежать? Я попробовал несколько стратегий последовательности без успеха.

5
задан Benjamin 1 September 2012 в 10:28
поделиться