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