artisan db:seed --数据库不工作
artisan db:seed --database not working
我想将一些数据播种到我的数据库中。到目前为止,这一切都适用于 "normal" 数据库。
现在我想将相同的数据(相同的播种器)播种到另一个数据库 运行。所以我尝试使用 --database=
命令
php artisan db:seed --database=cb4test --class=TestDataTableSeeder -v
但这会将数据播种到 "normal" 数据库中,而不是 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-table).
不过,这不起作用。
我在我的 TestDataTableSeeder.php
中创建了一条调试行,它给出了我当前使用的 DB-Table,这是默认连接中使用的(名为 couchbase),而不是连接中使用的 [=37] =].
使用Laravel 5.4
这是一个常见的误解,--database 指定的是数据库连接而不是名称。
因此,在您的 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文件的那三个变量完好无损。
希望对你有帮助
所以,我们发现这个问题的根源与 couchbase 驱动程序中的一个错误有关。
错误已修复,一切正常。
感谢所有试图帮助我的答案:D
我想将一些数据播种到我的数据库中。到目前为止,这一切都适用于 "normal" 数据库。
现在我想将相同的数据(相同的播种器)播种到另一个数据库 运行。所以我尝试使用 --database=
命令
php artisan db:seed --database=cb4test --class=TestDataTableSeeder -v
但这会将数据播种到 "normal" 数据库中,而不是 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-table).
不过,这不起作用。
我在我的 TestDataTableSeeder.php
中创建了一条调试行,它给出了我当前使用的 DB-Table,这是默认连接中使用的(名为 couchbase),而不是连接中使用的 [=37] =].
使用Laravel 5.4
这是一个常见的误解,--database 指定的是数据库连接而不是名称。
因此,在您的 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文件的那三个变量完好无损。
希望对你有帮助
所以,我们发现这个问题的根源与 couchbase 驱动程序中的一个错误有关。
错误已修复,一切正常。
感谢所有试图帮助我的答案:D