Laravel:从2个MySQL数据库生成迁移

时间:2018-08-31 13:00:03

标签: mysql laravel

我已将数据库分为MySQL上的2个数据库,我想从laravel上的两个数据库中生成迁移。 我进行了所有配置,但是当我执行命令“ php artisan migration:generate”时,它仅为第一个数据库创建迁移。 有谁知道如何创建两个数据库的迁移?

感谢您的帮助:)

我的config / database.php文件

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => 'InnoDB ROW_FORMAT=DYNAMIC' ,
    ], 

'mysql2' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST_2', '127.0.0.1'),
        'port' => env('DB_PORT_2', '3306'),
        'database' => env('DB_DATABASE_2', 'forge1'),
        'username' => env('DB_USERNAME_2', 'forge1'),
        'password' => env('DB_PASSWORD_2', ''),
        'unix_socket' => env('DB_SOCKET_2', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => 'InnoDB ROW_FORMAT=DYNAMIC' ,
    ],

我的.env文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=evamesure
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=evamesure1
DB_USERNAME=root
DB_PASSWORD=

3 个答案:

答案 0 :(得分:0)

运行migrate:generate,然后将您的DB_CONNECTION env变量更新为mysql2,然后再次运行。

请勿在.env文件中放入重复的密钥。在配置文件中,您将_2后缀添加到第二个连接的env变量中,但是您没有在.env中使用该后缀。


如果希望所有环境都使用两个数据库,则必须在第二个数据库的迁移和模型中手动插入连接名称。

答案 1 :(得分:0)

如果您要迁移2个数据库,您可以在.env中进行此操作 使用php artisan migrate

运行首次迁移
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=evamesure
DB_USERNAME=root
DB_PASSWORD=

先完成migration后再将.env更新为下一个database,然后再次运行php artisan migrate

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=evamesure1
DB_USERNAME=root
DB_PASSWORD=

答案 2 :(得分:0)

我不知道如何生成迁移,但是在编写迁移时,您可以指定要在其上运行迁移的连接:

Schema::connection('mysql')->create('your_table', function (Blueprint $table) {
    // This table will only be created for the mysql connection
});

Schema::connection('mysql2')->create('your_table', function (Blueprint $table) {
    // This table will only be created for the mysql2 connection
});

这将使您可以为不同的数据库使用不同的表。如果要在两个数据库中使用相同的表,则可以采用相同的方法:

foreach (['mysql', 'mysql2'] as $connection) {
    Schema::connection($connection)->create('your_table', function (Blueprint $table) {
        // Create a table for each database
    });
}

如果您希望某个模型使用非默认连接,请不要忘记在模型中指定相关的连接:

class User extends Model
{
    protected $connection = 'mysql2';
}