【问题标题】:Yii: how to perform db migration on test database?Yii:如何在测试数据库上执行数据库迁移?
【发布时间】:2012-03-21 19:02:00
【问题描述】:

在 Yii 中有没有对测试数据库执行迁移的命令?

【问题讨论】:

    标签: unit-testing migration yii database-migration


    【解决方案1】:

    是的,您只需将 connectionID 更改为指向您的 testdb。因此,您只需在 config/main.php 中添加:

    'components'=>...
        'testdb'=>array(
          'class'=>'CDbConnection',
                'connectionString' => 'mysql:host=localhost;dbname=my_test_db',
                'emulatePrepare' => true,
                'username' => 'myuser',
                'password' => 'mypass',
                'charset' => 'utf8',
            );
    ...
    

    注意该数组中的属性。

    完成后,您可以通过写入终端来运行迁移:

    protected/yiic migrate --connectionID=testdb
    

    【讨论】:

    • 有什么办法可以在我的测试用例的初始化中包含它,所以它会自动执行吗?
    • 请记住,迁移中可能有使用 Yii::app()->db 的代码。花了我一些时间来理解为什么使用 DbAuthmanager 组件的迁移对我的测试数据库失败...由于迁移命令是控制台命令,添加 testdb 组件不应该是 config/console.php 吗?
    【解决方案2】:

    AFAIK,不。 但是您可以在 config/console.php 中更改您的数据库连接并在另一个数据库上运行它。

    【讨论】:

    • 不再正确,请参阅 Eric 的回答。
    【解决方案3】:

    理论上,如果您使用的是代码接收,则可以使用

    php codeception/bin/yii migrate/up --interactive=0

    在测试文件夹中

    【讨论】:

      【解决方案4】:

      对于目前的yii2版本,我正好在用

      php test/bin/yii migrate
      

      我的数据库配置在config/test_db.php

      【讨论】:

        猜你喜欢
        • 2014-10-07
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2011-12-10
        • 2011-10-05
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多