Laravel辅助数据库连接不起作用

时间:2017-04-14 15:51:49

标签: laravel laravel-5.3

我在config/database.php中有一个mysql数据库连接,如下所示,它工作正常。

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

我正在尝试定义另一个备用连接(用于测试目的),如下所示。 (相同的主机但不同的数据库):

'mysql_testing' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE_TEST', 'forge'),
    'username' => env('DB_USERNAME_TEST', 'forge'),
    'password' => env('DB_PASSWORD_TEST', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

其中DB_DATABASE_TESTDB_USERNAME_TESTDB_PASSWORD_TEST.env中定义如下:

DB_DATABASE_TEST=db_other
DB_USERNAME_TEST=usr_other
DB_PASSWORD_TEST=secret

但是,第二个连接工作。

在修补程序中,如果我尝试使用新连接:

  

DB ::连接(' mysql_testing') - > getPdo()
  InvalidArgumentException,消息'数据库[mysql_testing]没有       被配置'

如果我尝试检查配置值,mysql有效,但新连接mysql_testing返回null:

Config::get('database.connections.mysql')
[
 "driver" => "mysql",
 "host" => "127.0.0.1",
 "port" => "3306",
 "database" => "***",
 "username" => "***",
 "password" => "***",
 "charset" => "utf8",
 "collation" => "utf8_unicode_ci",
 "prefix" => "",
 "strict" => false,
 "engine" => null,
]

Config::get('database.connections.mysql_testing')
null

知道如何调试此问题?

1 个答案:

答案 0 :(得分:0)

这是因为Laravel 5自动缓存配置值。因此,即使我们更改config / database.php值,更改也不会生效,因为Laravel将继续从缓存中读取它。

有一种清除缓存的方法。 但这不会清除配置缓存

php artisan cache:clear  

幸运的是,有一个不同的工匠命令。 要清除配置缓存,您需要使用

php artisan config:clear