0

最新バージョンの yii-dbmigration を使用して新しい問題が発生しました。移行を実行すると、コンソールに以下のメッセージが表示され、移行が機能しません。

$ ./protected/yiic migrate
Migrations directory: protected/migrations/

=== Applying: m20110123200901_create_eav_table =================================
ERROR: m20110123200901_create_eav_table does not have a method named "performTransactional".

移行のコードは次のとおりです。

<?php

class m20110123200901_create_eav_table extends CDbMigration {

    public function up() {
      $t = $this->newTable('eav');
      $t->primary_key('id');
      $t->integer('section_id');
      $t->integer('entry_id');
      $t->integer('field_id');
      $t->string('attribute');
      $t->text('value');
      $t->datetime('created_at');
      $t->datetime('updated_at');
      $this->addTable($t);
    }

    public function down() {
      $this->removeTable('eav');
    }

}

何が起こるか知っている人はいますか?

ありがとう。

編集済み

こんにちは、問題は見つかりましたが、解決策がわかりません。

この問題は Yii v1.1.7-dev で発生します。別のバージョン (v1.1.5-dev など) を使用している場合、移行は正しく機能します。

誰でもそれを修正する方法を知っていますか?

ありがとう。

4

1 に答える 1

2

わかりました、私は問題と解決策を見つけました。

私は yii-dbmigration 拡張機能を使用していましたが、yii には v1.1.6 以降の移行が実装されているため、移行を実行したときに 2 つのバージョンが競合していました。

解決策は、拡張機能をアンインストールして、新しいネイティブ マイグレーションを使用することです。

yii のネイティブ マイグレーション機能と yii 拡張機能の db-migration に関する個人的な意見としては、2 番目の方が up/down メソッドで優れた oop 実装を備えているため、より簡単でエレガントな作業が好きだというものがあります。

ありがとう

于 2011-01-31T12:44:46.920 に答える