php - 具有多个数据库的 Yii 迁移 - 指定 DB?

标签 php mysql sqlite yii database-migration

我们有一个基于 Yii 构建的大型应用程序。

到目前为止,迁移是通过在 phpliteadmin/phpmyadmin 中复制粘贴 SQL 转储来完成的,但这不是很方便。

我想使用 CDbMigrationyiic migrate

问题是我们有两个数据库 - 一个用于配置和设置的小型 SQLite,以及用于存储一些历史记录的大型 mysql。

如何指定迁移属于哪个数据库?

这是基本的迁移结构,用于说明。

class do_stuff extends CDbMigration
{
    public function up()
    {
        // create table
    }

    public function down()
    {
        // drop table
    }
}

最佳答案

config.php 文件中,在 components 数组中指定数据库连接。

    'db1'=>array(
                'class'=>'CDbConnection',
                'connectionString' => 'mysql:charset=utf8mb4;host=localhost;dbname=dbname1',
                'username' => 'root',
                'password' => 'root',
                'charset' => 'utf8',
            ),
    'db2'=>array(
                'class'=>'CDbConnection',
                'connectionString' => 'mysql:charset=utf8mb4;host=localhost;dbname=dbname2',
                'username' => 'root',
                'password' => 'root',
                'charset' => 'utf8',
            ),

然后在迁移中,您可以执行以下操作:

protected $dbConnection1;
protected function getDbConnection1()
{
    if (null !== $this->dbConnection1) {
        return $this->dbConnection1;
    }

    return $this->dbConnection1 = Yii::app()->getComponent('db1');
}

重复第二次连接。

然后使用这些方法获取每个数据库的 CDbConnection,您可以从中创建要执行的命令。

关于php - 具有多个数据库的 Yii 迁移 - 指定 DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490193/

相关文章:

php - 使用 SQL 语句获取数据库中字段的最大整数?

php - 为什么 MySql 中有文本时没有值

php - Laravel 通过 id 读取表数据

php - sphinx 只重置一个过滤器

python - 如何在Python中通过shell导入sql?

c++ - 虚拟机运行Qt程序报错 "QSQLITE driver not loaded"

python - 将 sqlite 的输出从元组转换为 Python 中的列表

python - pip-3.3 安装 MySQL-python

mysql - 如何在 MySQL Workbench 中执行 SQL 查询

php - 多数据库查询感知性能