2016-08-03 19 views
2

私は、次の移行複数のデータベース

public function handle() 
{ 

    $sites = Sites::all(); 


    foreach($sites as $site) 
    { 
     $host  = $site->h; 
     $database = $site->d; 
     $username = $site->u; 
     $password = $site->p; 

     $this->info('Trying to migrate ' . $database); 

     Config::set('database.connections.mysql.host',  $host); 
     Config::set('database.connections.mysql.database', $database); 
     Config::set('database.connections.mysql.username', $username); 
     Config::set('database.connections.mysql.password', $password); 

     //Reconnect with new credentials 
     DB::reconnect('mysql'); 

     //Call the migration on the new connection 
     $this->call('migrate'); 

     $this->info('Migrations complete for database ' . $site->d); 
    } 
} 

最初のサイトは常に、それはすでに、1そこにいるにもかかわらず、移行テーブルを作成しようとし続けるしかし後に、細かな移行が含まれている私のコマンドmigrate:sを持っていますデータが入力されます。

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migrations' already exists 

資格情報がデータベースの正しいです、私は最初の移行後にテーブルを作成しようとしているなぜを把握することはできません。

+0

各サイトの移行テーブルの内容を確認してください。私は同期が外れているので、移行テーブルを作成するために移行を実行していないと思っていますか?また、Laravelのどのバージョンをお使いですか? – Loren

+0

@Loren 5.1では、移行テーブルがいっぱいです。データベースを削除しました。クリーンインストールからは、常に最初に動作します。ちょうど今遊んで、何らかの理由で資格情報を同期していないようです。 – Ian

答えて

1

- >呼び出し関数が何らかの形でLaravelの一部を再初期化するか、少なくともそれが私の最高の推測です。データベース接続(mysql1、mysql2、mysql3など)として各サイトがある場合は、--databaseオプションを使用して移行を実行して移行を実行し、それが役立つかどうか確認してください。

migrateコマンドは、データベース接続を選ぶためのオプションがあります。

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Console/Migrations/MigrateCommand.php

+0

試しましたが、基本テーブルと同じ結果が見つかりませんでした。 – Ian

2

問題は、あなたが使用して接続をパージする必要があるので、設定は、それゆえ第一の接続作業、キャッシュされていたということです

DB::purge('connectionName'); 
関連する問題