使用最新版本的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)时,迁移工作正常。
任何人都知道如何修复它?
感谢。
答案 0 :(得分:2)
好的,我找到了问题和解决方案。
我使用的是yii-dbmigration扩展,yii有自v1.1.6以来的迁移实现,所以当我运行迁移时,这两个版本是冲突的。
解决方案是,卸载扩展并使用新的本机迁移。
关于yii本地迁移功能和yii扩展db-migration的个人意见是,第二个更喜欢工作更容易和优雅,因为它在up / down方法上有很好的oop实现。
谢谢