Миграция доктрины Symfony: удаление индекса не работает - PullRequest
1 голос
/ 03 сентября 2010

Я использую Symfony 1.4 с Doctrine.

Вот моя первоначальная схема:

Page:
  tableName: page
  columns:
    ref:
      type: string(50)
      notnull: true
      unique: true

Я хочу удалить индекс в столбце ref с помощью миграций. Таким образом, схема становится:

Page:
  tableName: page
  columns:
    ref:
      type: string(50)
      notnull: true

А мой файл миграции выглядит примерно так:

class Changepageref extends Doctrine_Migration_Base
{
  public function up()
  { 
    $this->removeIndex('page','ref');
  }

  public function down()
  {
    $this->addIndex('page','ref', array('fields'=>array('ref'=>array()),'unique'=>true));
  }
}

Но это не сработает, когда я запускаю его, потому что он ищет индекс с именем "ref_idx". Но если я посмотрю на свою базу данных, доктрина создаст индекс с именем «ref», а не «ref_idx».

Что я делаю не так?

1 Ответ

0 голосов
/ 04 сентября 2010

Вы можете определить именование индексов по умолчанию: по умолчанию "_idx". Вы можете изменить в диспетчере соединений.

http://www.doctrine -project.org / projects / orm / 1.2 / docs / manual / configuration / ru # атрибуты именования показывает это как

$ Manager-> SetAttribute (Doctrine_Core :: ATTR_IDXNAME_FORMAT, '% S_index');

Попробуйте установить его там, и он должен быть постоянным во всем приложении с именами индексов.

...