Closed i-panov closed 5 years ago
What version of Yii2, PHP and what kind of database?
What version of Yii2, PHP and what kind of database?
2.0.16, 7.1, mysql 5.7
Latest test was build under Yii2 2.0.15 and everything is fine (link).
I don't have ideas why it happened. Do you know why?
@bupy7 Everything works if I start the migration from the console, but I want to run it from the code like this: Yii::$app->runAction('migrate/up', ['migrationPath' => '@bupy7/pages/migrations', 'interactive' => false]);
. In this case, the error falls.
@bupy7 But I run not only this action, but also others, and everything works! In addition, I tried your method and got the same error.
No ideas. You should run migrations through console.
@bupy7 помнится вы русский, так что объясню так. Я просто делаю init миграцию и в нее пихаю всякие сторонние миграции типа инициализации rbac, логов и вот вашей например. Чисто чтоб ничего не забыть если надо будет заново накатывать с нуля.
Однако я сейчас решил эту проблему. Я накатывал методом safeUp
который делает это все в транзакции, а обычным up
все сработало! Вот уж действительно загадка почему оно не хотело в транзакции работать. Вроде и миграция то простая. Ну да ладно - мне не критично. Пускай будет так. Спасибо за помощь.
P.S. Кстати почему вы не используете билдер? Так и читабельнее и удобнее, к тому же я бы все-таки поместил этот столбец перед датами: $this->addColumn($this->_tableName, 'display_title', $this->boolean()->defaultValue(true)->after('meta_description'));
ОМГ... Она еще и не отменяется!
Total 1 migration to be reverted:
m180927_200917_add_display_title
Revert the above migration? (yes|no) [no]:yes
*** reverting m180927_200917_add_display_title
Exception 'yii\base\InvalidConfigException' with message 'Failed to instantiate component or class "m180927_200917_add_display_title".'
Это кстати я уже из консоли и применил и отменил. Применилась нормально, но отменяться никак не хочет... Странно.
Кстати почему вы не используете билдер.
Билдера нет в старых версиях Yii2.
Миграции успешно применяются и успешно откатываются:
vagrant@yii2basic:/app$ ./yii migrate/up --migrationPath=@bupy7/pages/migrationsYii Migration Tool (based on Yii v2.0.17-dev)
Creating migration history table "migration"...Done.
Total 2 new migrations to be applied:
m150429_155009_create_page_table
m180927_200917_add_display_title
Apply the above migrations? (yes|no) [no]:y
*** applying m150429_155009_create_page_table
> create table {{%page}} ... done (time: 0.010s)
> create unique index page_idx_1 on {{%page}} (alias) ... done (time: 0.008s)
> create index page_idx_2 on {{%page}} (alias,published) ... done (time: 0.006s)
*** applied m150429_155009_create_page_table (time: 0.045s)
*** applying m180927_200917_add_display_title
> add column display_title boolean DEFAULT 1 to table {{%page}} ... done (time: 0.011s)
*** applied m180927_200917_add_display_title (time: 0.020s)
2 migrations were applied.
Migrated up successfully.
vagrant@yii2basic:/app$ ./yii migrate/down --migrationPath=@bupy7/pages/migrations
Yii Migration Tool (based on Yii v2.0.17-dev)
Total 1 migration to be reverted:
m180927_200917_add_display_title
Revert the above migration? (yes|no) [no]:y
*** reverting m180927_200917_add_display_title
> drop column display_title from table {{%page}} ... done (time: 0.012s)
*** reverted m180927_200917_add_display_title (time: 0.040s)
1 migration was reverted.
Migrated down successfully.
vagrant@yii2basic:/app$ ./yii migrate/down --migrationPath=@bupy7/pages/migrations
Yii Migration Tool (based on Yii v2.0.17-dev)
Total 1 migration to be reverted:
m150429_155009_create_page_table
Revert the above migration? (yes|no) [no]:y
*** reverting m150429_155009_create_page_table
> drop table {{%page}} ... done (time: 0.005s)
*** reverted m150429_155009_create_page_table (time: 0.026s)
1 migration was reverted.
Migrated down successfully.
Также, они успешно откатываются и через метод, который Вы хотите использовать. Почему у Вас это не работает - мне неизвестно. Я показал Вам метод, как это можно сделать, аналогично сделал и я:
public function actionUp()
{
$migrateController = new MigrateController('migrate', Yii::$app);
$migrateController->interactive = false;
$migrateController->migrationPath = [
'@bupy7/pages/migrations',
];
$migrateController->runAction('up');
}
public function actionDown()
{
$migrateController = new MigrateController('migrate', Yii::$app);
$migrateController->interactive = false;
$migrateController->migrationPath = [
'@bupy7/pages/migrations',
];
$migrateController->runAction('down', ['all']);
}
@bupy7 ладно. Видимо какая-то проблема в настройках приложения. Буду искать. Спасибо за попытку помочь.