2017-04-14 71 views
1

我有一个mysql77数据库连接config/database.php如下,它工作正常。Laravel次要数据库连接不起作用

'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 

任何想法我怎么可以调试这个问题?

回答

0

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

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

php artisan cache:clear 

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

php artisan config:clear