Skip to content

php spark migrate, migrating table to wrong database group #5087

@renmura

Description

@renmura

I'm facing this issue in the last few days. I have 3 databases to connect with. Well actually I just need to connect to 1 database since my task is on that 1 database. But, my other team members need to connect to other database, so we configured 3 database connections.

Note : the database I'm working on is api_mobile

A week ago, I created some migration files to migrate. At that time, I only made one database configuration. And executing php spark migrate has no problems.

Several days later, we (team members) merging our work, so we created 3 database connections.

When I execute php spark migrate -g api_mobile (hoping my new migration file is creating table into api_mobile), all of the migration files that I have created is migrating tables into wrong database (migrated to default group).

My laptop setup is:
Apache 2.4.48
PHP 8.0.9
PostgreSQL 13.3

My CLI response:

D:\xampp\htdocs\my-app> php spark migrate -g api_mobile

CodeIgniter v4.1.3 Command Line Tool - Server Time: 2021-09-14 22:27:38 UTC+07:00

Running all new migrations...
        Running: (App) 2021-09-04-141412_App\Database\Migrations\CreateRoleTable
        Running: (App) 2021-09-04-141513_App\Database\Migrations\CreateUserTable
        Running: (App) 2021-09-04-143719_App\Database\Migrations\CreateAuditTrailTable
        Running: (App) 2021-09-04-144446_App\Database\Migrations\CreateJenisSurveyTable
        Running: (App) 2021-09-04-144621_App\Database\Migrations\CreateSurveyTable
        Running: (App) 2021-09-04-145012_App\Database\Migrations\CreateSurveyDetailTable
        Running: (App) 2021-09-04-150024_App\Database\Migrations\CreateMenuTable
        Running: (App) 2021-09-04-150300_App\Database\Migrations\CreateHakAksesTable
        Running: (App) 2021-09-04-150450_App\Database\Migrations\CreateHeroTable
        Running: (App) 2021-09-04-150639_App\Database\Migrations\CreateJudulTable
        Running: (App) 2021-09-04-150753_App\Database\Migrations\CreateAboutTable
        Running: (App) 2021-09-04-151115_App\Database\Migrations\CreateTimTable
        Running: (App) 2021-09-04-151123_App\Database\Migrations\CreateTimSocmedTable
        Running: (App) 2021-09-04-151649_App\Database\Migrations\CreatePesanTable
        Running: (App) 2021-09-04-151905_App\Database\Migrations\CreateBalasanTable
        Running: (App) 2021-09-04-152100_App\Database\Migrations\CreateKontakTable
        Running: (App) 2021-09-04-152304_App\Database\Migrations\CreateFooterTable
        Running: (App) 2021-09-04-152348_App\Database\Migrations\CreateCiSessionsTable
        Running: (App) 2021-09-07-041929_App\Database\Migrations\CreateLaporanBugTable
        Running: (App) 2021-09-14-133002_App\Database\Migrations\CreateUploadTable
        Running: (App) 2021-09-14-134138_App\Database\Migrations\CreateUploadDetailTable
Done migrations.

My migrations table (created by CI 4, and yes in the wrong database):

id|version          |class                                          |group     |namespace|time      |batch|
--+-----------------+-----------------------------------------------+----------+---------+----------+-----+
 1|2021-09-04-141412|App\Database\Migrations\CreateRoleTable        |api_mobile|App      |1631633259|    1|
 2|2021-09-04-141513|App\Database\Migrations\CreateUserTable        |api_mobile|App      |1631633259|    1|
 3|2021-09-04-143719|App\Database\Migrations\CreateAuditTrailTable  |api_mobile|App      |1631633259|    1|
 4|2021-09-04-144446|App\Database\Migrations\CreateJenisSurveyTable |api_mobile|App      |1631633259|    1|
 5|2021-09-04-144621|App\Database\Migrations\CreateSurveyTable      |api_mobile|App      |1631633259|    1|
 6|2021-09-04-145012|App\Database\Migrations\CreateSurveyDetailTable|api_mobile|App      |1631633259|    1|
 7|2021-09-04-150024|App\Database\Migrations\CreateMenuTable        |api_mobile|App      |1631633259|    1|
 8|2021-09-04-150300|App\Database\Migrations\CreateHakAksesTable    |api_mobile|App      |1631633259|    1|
 9|2021-09-04-150450|App\Database\Migrations\CreateHeroTable        |api_mobile|App      |1631633259|    1|
10|2021-09-04-150639|App\Database\Migrations\CreateJudulTable       |api_mobile|App      |1631633259|    1|
11|2021-09-04-150753|App\Database\Migrations\CreateAboutTable       |api_mobile|App      |1631633259|    1|
12|2021-09-04-151115|App\Database\Migrations\CreateTimTable         |api_mobile|App      |1631633259|    1|
13|2021-09-04-151123|App\Database\Migrations\CreateTimSocmedTable   |api_mobile|App      |1631633259|    1|
14|2021-09-04-151649|App\Database\Migrations\CreatePesanTable       |api_mobile|App      |1631633259|    1|
15|2021-09-04-151905|App\Database\Migrations\CreateBalasanTable     |api_mobile|App      |1631633259|    1|
16|2021-09-04-152100|App\Database\Migrations\CreateKontakTable      |api_mobile|App      |1631633259|    1|
17|2021-09-04-152304|App\Database\Migrations\CreateFooterTable      |api_mobile|App      |1631633259|    1|
18|2021-09-04-152348|App\Database\Migrations\CreateCiSessionsTable  |api_mobile|App      |1631633259|    1|
19|2021-09-07-041929|App\Database\Migrations\CreateLaporanBugTable  |api_mobile|App      |1631633259|    1|
20|2021-09-14-133002|App\Database\Migrations\CreateUploadTable      |api_mobile|App      |1631633259|    1|
21|2021-09-14-134138|App\Database\Migrations\CreateUploadDetailTable|api_mobile|App      |1631633259|    1|

My Database.php file is:

public $default = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'postgres',
    'password' => 'password',
    'database' => 'geonode_data',
    'DBDriver' => 'Postgre',
    ....
];

public $ppigis = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'postgres',
    'password' => 'password',
    'database' => 'ppigis',
    'DBDriver' => 'Postgre',
    ....
];

public $api_mobile = [
    'DSN'      => '',
    'hostname' => 'localhost',
    'username' => 'postgres',
    'password' => 'password',
    'database' => 'api_mobile',
    'DBDriver' => 'Postgre',
    ....
];

My .env file is:

database.default.hostname = localhost
database.default.database = geonode_data
database.default.username = postgres
database.default.password = password
database.default.DBDriver = Postgre

database.ppigis.hostname = localhost
database.ppigis.database = ppi_gis
database.ppigis.username = postgres
database.ppigis.password = password
database.ppigis.DBDriver = Postgre

database.api_mobile.hostname = localhost
database.api_mobile.database = api_mobile
database.api_mobile.username = postgres
database.api_mobile.password = password
database.api_mobile.DBDriver = Postgre

One of my migrations file:

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateRoleTable extends Migration
{
	protected $DBGroup = 'api_mobile';
	

Here's how to reproduce the error:

  1. Creating 1 database connection, api_mobile
  2. Creating 19 migration files via CLI
  3. Several days later, adding two new database connection
  4. Creating 2 new migration files via CLI
  5. Execute php spark migrate -g api_mobile hoping that will only migrate api_mobile group

Thank you for your times.. 😄

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions