我想将一些数据播种到我的数据库中。到目前为止,这一切都适用于" normal"数据库中。
现在我想将相同的数据(相同的播种机)播种到另一个运行的数据库。所以我尝试使用--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-bucket(在mysql中将是一个mysql表)。
但是,这不起作用。
我在我的TestDataTableSeeder.php
中创建了一个调试行,它给出了当前使用的DB-Table,这是在default-connection(名为couchbase)中使用的,而不是在连接中使用的那个&#cb4test&#39 ;
使用Laravel 5.4
答案 0 :(得分:1)
它常见的误解, - 数据库指定数据库连接而不是名称。
因此,在 config \ 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_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 文件中的这三个变量完整无缺。
我希望它有所帮助
答案 1 :(得分:0)
因此,我们发现此问题的根源与couchbase驱动程序中的错误有关。
错误修复,一切正常。
感谢所有帮助我的答案:D