通过其他连接向下迁移Yii2控制台失败

时间:2019-02-18 13:08:26

标签: yii2

我正在尝试将控制台迁移到另一个connecton,但是关闭失败

我有联系

  'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=pos_db',
          ....other configs
    ],
    'connection_identifier' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=newdbo',
        ...other configs
    ],

我在控制台中拥有

public function init()
{
    $this->db = 'connection_identifier';
    parent::init();
}

public function safeUp()
{
    $this->createTable('database_connection_domains', [
        'id' => $this->primaryKey(),
        'domain'=>$this->text()->notNull(),
        'connection_id'=>$this->integer()->notNull(),
        'created_at' => $this->integer()->notNull(),
        'status'=>$this->integer()->defaultValue(0),
        'FOREIGN KEY (connection_id) REFERENCES database_connections (id) ON DELETE RESTRICT ON UPDATE CASCADE',
    ]);


}

/**
 * {@inheritdoc}
 */
public function safeDown()
{
    $this->dropTable('database_connection_domains');
}

当我进行向上迁移时,在newdbo数据库上正确创建了该数据库。在不删除表的down命令期间出现问题。我该如何使它掉落桌子。

当我运行/yii migrate/fresh时遇到错误Base table or view already exists: 1050 Table 'database_connections' already exists,这意味着该表未删除 我想念什么?

1 个答案:

答案 0 :(得分:1)

./yii migrate/fresh不使用迁移来清理数据库,而是使用custom implementation来按正确的顺序删除所有表。因此,永远不会使用数据库组件的设置。您需要在命令调用中配置数据库:

./yii migrate/fresh --db=connection_identifier