我已将数据库分为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=
答案 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';
}