首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行数据库迁移时使用特定的数据库连接

运行数据库迁移时使用特定的数据库连接
EN

Stack Overflow用户
提问于 2019-07-04 20:28:18
回答 1查看 27关注 0票数 0

我有以下数据库迁移,我使用它进行测试:

代码语言:javascript
复制
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facade\App;
use Illuminate\Database\Migrations\Migration;

class TestWebsitedbMigration extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        if(App::environment() == "testing")
        {
            ini_set('memory_limit', '-1');
            DB::unprepared( file_get_contents( "resources/database_dumps/my_website.sql" ) );
        }
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        if(App::environment() == "testing")
        {
            // Burn it down!!!!
            // But needs some im plementation first
        }
    }
}

整个想法是为了在我运行phpunit集成测试时使用迁移来创建和创建数据库。因为之前没有迁移脚本,所以我在resources/database_dumps/my_website.sql中创建了一个仅模式的数据库转储。

我使用该转储将模式加载到我的数据库中。但是我的应用程序有两个数据库连接:

代码语言:javascript
复制
return [

    'default'     => env('DB_CONNECTION', 'brock_lesnar'),
    'connections' => [
        'seth_rollins' => [
            'driver'   => 'pgsql',
            'host'     => env('DB_API_HOST', '192.168.10.70'),
            'port'     => env('DB_API_PORT', '5432'),
            'database' => env('DB_API_DATABASE', 'etable_api'),
            'username' => env('DB_API_USERNAME', ''),
            'password' => env('DB_API_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
            'sslmode'  => 'prefer',
        ],

        'brock_lesnar' => [
            'driver'   => 'pgsql',
            'host' => env('BROCK_DB_HOST', '192.168.10.70'),
            'port'     => env('BROCK_DB_PORT', '5432'),
            'database' => env('BROCK_DB_DATABASE', 'etable'),
            'username' => env('BROCK_DB_USERNAME', ''),
            'password' => env('BROCK_DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
            'sslmode'  => 'prefer',
        ],
    ],

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
     */

    'redis' => [
        'client'  => 'predis',
        'default' => [
            'host'     => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', NULL),
            'port'     => env('REDIS_PORT', 6379),
            'database' => 0,
        ],
    ],
];

我想将此迁移运行到seth_rollins数据库连接中。你知道怎么做吗?如您所见,我的默认数据库是brock_lestnar数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-05 22:49:03

假设你有这个玩具迁移:

代码语言:javascript
复制
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class MakeDummyTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    { 
        $schema=Schema::connection('seth_rollins');
        $schema->create('dummy_table', function (Blueprint $table) {
                $table->increments('id');
                $table->string('lover')->nullable()->default('Becky Lynch')
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {     
       // Destroy it here
    }
}

您可以通过Schema::connection('seth_rollins');指定要运行迁移的连接。此外,您还可以在运行测试的位置上指定一个文件夹。假设你创建了文件夹,然后运行:

代码语言:javascript
复制
  php artisan make:migration --path './database/migrations/seth_rollins' ^migration_name^ --table=^table_name^ 

您可以运行迁移,如此asnwer所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56887982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档