2017-03-20 69 views
1

我想種一些數據到我的數據庫。到目前爲止,這一切都適用於「正常」的數據庫。工匠分貝:種子 - 數據庫不工作

現在我想將相同的數據(相同的播種機)播種到另一個運行的數據庫。所以我嘗試使用--database=命令

php artisan db:seed --database=cb4test --class=TestDataTableSeeder -v 

但是,這將數據種子進入「正常」的數據庫,而不是在cb4test指定的。我究竟做錯了什麼?

更多信息:

這是我config/database.php的一部分:

'connections' => [ 

    'couchbase' => [ 
     'driver' => 'couchbase', 
     'host'  => env('DB_HOST', 'localhost'), 
     'port'  => env('DB_PORT', 8091), 
     'bucket' => env('DB_DATABASE'), 
     'username' => env('DB_USERNAME'), 
     'n1ql_hosts' => [ 
      'http://'.env('DB_HOST', 'localhost').':8093' 
     ] 
    ], 

    'cb4test' => [ 
     'driver' => 'couchbase', 
     'host'  => env('DB_HOST', 'localhost'), 
     'port'  => env('DB_PORT', 8091), 
     'bucket' => env('DB_TEST', 'msg4test'), 
     'username' => env('DB_USERNAME'), 
     'n1ql_hosts' => [ 
      'http://'.env('DB_HOST', 'localhost').':8093' 
     ] 
    ], 

在我.env我確實有DB_TEST指向正確的couchbase桶的條目(在MySQL中,這將是一個MySQL -表)。

不過,這是行不通的。 我在我的TestDataTableSeeder.php中做了一個調試行,它給出了我當前使用的DB-Table,這是在默認連接(名爲couchbase)中使用的,而不是在連接'cb4test'中使用的調試行。

使用Laravel 5.4

+0

您是否定義了與cb4test數據庫的正確連接? –

+0

是的,連接已配置並正在工作。當我在--database中輸入一個錯誤時,我會得到一個錯誤,所以laravel在'config/database.php'裏面查找,如果這個連接存在的話,但是它不會使用它。 – Paladin

+1

你可以分享播種機班的樣本嗎?可能是你定義了一個特定的數據庫到播種機 –

回答

1

其普遍的誤解,--database指定數據庫連接而不是名字。

所以在你配置\ database.php中文件需要添加了使用這種不同的數據庫就像一個連接:

'mysql2' => [ 
      'driver' => 'mysql', 
      'host' => env('DB_HOST', 'localhost'), 
      'port' => env('DB_PORT', '3306'), 
      'database' => env('DB_DATABASE2', 'forge'), 
      'username' => env('DB_USERNAME2', 'forge'), 
      'password' => env('DB_PASSWORD2', ''), 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => false, 
      'engine' => 'InnoDB', 
     ], 

然後在你的.ENV,定義了三個變量爲其他DB:

DB_DATABASE2 = cb4test 
DB_USERNAME2 = //username for cb4test 
DB_PASSWORD2 = //password for cb4test 

然後使用:

php artisan db:seed --database=mysql2 --class=TestDataTableSeeder -v 

更改數據庫的更好方法是在播種機本身中更改它。 在您:TestDataTableSeeder.php

use Illuminate\Support\Facades\DB;//at top 

//then inside function: 
DB::disconnect('mysql'); 
config(['database.connections.mysql.database' => env('DB_DATABASE2','')]); 
config(['database.connections.mysql.username' => env('DB_USERNAME','')]); 
config(['database.connections.mysql.password' => env('DB_PASSWORD2','')]); 

當然你需要.ENV文件完好的這三個變量。

我希望它能幫助

+0

感謝您的回答。我已經完成了所有這些事情(特別是連接),但這是我在這裏問這個問題的關鍵。我不會工作,我不知道爲什麼它不工作。 – Paladin

+0

是您的默認數據庫的'msg4test'名稱? – Learner

0

所以,我們想通了,這個問題的根源是有關在couchbase驅動程序的bug。

Bug修復,一切正常。

感謝所有的答案,試圖幫助我:D