没有不值得去解决的问题,也没有不值得去学习的技术!

Implementing Multiple Database Migrations When Multiple DB Application Components Are Added in Yii 2.0

You can then use the following commands to apply migrations to the respective databases. The first command will apply the migrations in the /console/migrations/ directory to the db database, while the second command will apply the migrations in /console/migrations/stat_db/ to the statDb database, and so on. Only one level of directory hierarchy is supported.

1. When multiple database connection components are added in Yii 2.0

PHP

    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=62.234.135.47;dbname=pcs_api',
            'username' => 'sq_pcs',
            'password' => '',
            'tablePrefix' => 'pa_',
            'charset' => 'utf8mb4',
            'enableSchemaCache' => false,
            'schemaCacheDuration' => 3600,
            'schemaCache' => 'redisCache',
        ],
        'statDb' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=62.234.135.47;dbname=pcs_stat',
            'username' => 'sq_pcs',
            'password' => '',
            'tablePrefix' => 'ps_',
            'charset' => 'utf8mb4',
        ],
    ],

2. The strategy for migrating multiple databases is to store the migrations in different directories. One connection component corresponds to one directory. The directory for db: /console/migrations/. The directory for statDb: /console/migrations/stat_db/. As shown in Figure 1

The strategy for migrating multiple databases is to store the migrations in different directories. One connection component corresponds to one directory. The directory for db: /console/migrations/. The directory for statDb: /console/migrations/stat_db/.
Figure 1

3. When generating a migration file under statDb, you need to specify: –migrationPath=@console/migrations/stat_db/ , as shown in Figure 2

When generating a migration file under statDb, you need to specify: --migrationPath=@console/migrations/stat_db/
Figure 2
Plaintext

PS E:\wwwroot\pcs-stat> ./yii migrate/create stat_task --migrationPath=@console/migrations/stat_db/
Yii Migration Tool (based on Yii v2.0.31)

Create new migration 'E:\wwwroot\pcs-stat/console/migrations/stat_db/\m200520_064341_stat_task.php'? (yes|no) [no]:yes
New migration created successfully.

4. You can then use the following commands to apply migrations to the respective databases. The first command will apply the migrations in the /console/migrations/ directory to the db database, while the second command will apply the migrations in /console/migrations/stat_db/ to the statDb database, and so on. Only one level of directory hierarchy is supported. As shown in Figure 3

You can then use the following commands to apply migrations to the respective databases. The first command will apply the migrations in the /console/migrations/ directory to the db database, while the second command will apply the migrations in /console/migrations/stat_db/ to the statDb database, and so on. Only one level of directory hierarchy is supported.
Figure 3
Plaintext

PS E:\wwwroot\pcs-stat> ./yii migrate
Yii Migration Tool (based on Yii v2.0.31)

No new migrations found. Your system is up-to-date.
PS E:\wwwroot\pcs-stat> ./yii migrate --migrationPath=@console/migrations/stat_db/ --db=statDb
Yii Migration Tool (based on Yii v2.0.31)

Creating migration history table "ps_migration"...Done.
Total 2 new migrations to be applied:
        m200519_065119_stat_task
        m200519_071446_stat_resource

Apply the above migrations? (yes|no) [no]:no
PS E:\wwwroot\pcs-stat> ./yii migrate --migrationPath=@console/migrations/stat_db/ --db=statDb
Yii Migration Tool (based on Yii v2.0.31)

Creating migration history table "ps_migration"...Done.
Total 2 new migrations to be applied:
        m200519_065119_stat_task
        m200519_071446_stat_resource
Apply the above migrations? (yes|no) [no]:yes
*** applying m200519_065119_stat_task
    > create table {{%stat_task}} ... done (time: 0.666s)
    > create unique index uc_group_id_code_ca on {{%stat_task}} (group_id,code,created_at) ... done (time: 0.077s)
*** applied m200519_065119_stat_task (time: 1.016s)

*** applying m200519_071446_stat_resource
    > create table {{%stat_resource}} ... done (time: 0.762s)
    > create unique index uc_group_id_ca on {{%stat_resource}} (group_id,created_at) ... done (time: 0.081s)
*** applied m200519_071446_stat_resource (time: 1.113s)


2 migrations were applied.

Migrated up successfully.

5. Checking the migration history in the statDb database, it matches expectations. As shown in Figure 4

Checking the migration history in the statDb database, it matches expectations.
Figure 4

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系