2017-12-27 27 views
0

私はBrotzka Envエディタを使用しています。新しく作成したデータベースに接続するためのページを作成しています。私.envでは、私は、これは動的にenv値を変更する

DB_CONNECTION=mysql 
DB_HOST=localhost 
DB_PORT=3306 
DB_DATABASE=xxx 
DB_USERNAME=root 
DB_PASSWORD= 

値私はこのコード

$env = new DotenvEditor(); 
$env->changeEnv([ 
    'DB_HOST' => $request['hostname'], 
    'DB_DATABASE' => $request['dbname'], 
    'DB_USERNAME' => $request['username'], 
    'DB_PASSWORD' => $request['dbpassword'], 
]); 

$exitCode = Artisan::call('config:clear'); 
$exitCode = Artisan::call('cache:clear'); 

DB::connection()->getPdo(); 

しかし、DB上を実行することにより、それぞれショップ、Pする@ ssw0rdするDB_DATABASEとDB_PASSWORDを変更するために管理しています。接続() - getPdo ()行のようなエラーが表示される

[2017-12-27 06:42:15] local.ERROR: exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'XXXXX'@'localhost' (using password: NO)' in C:\alaracart\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:43 

これはまだ古い.env値です。 laravelを再度読み込むための 'reset'コマンドは何でしょうか?ありがとう。

+0

ユーザーXXXXX '@'のために拒否されたこの 'アクセスユーザ名とパスワードが間違っているとき**私が店にDB_DATABASEとDB_PASSWORDを変更するために管理 –

+0

localhost''エラーがスローされますこのコードを実行することでそれぞれP @ ssw0rd **アーカイブしようとしていますか?この –

+0

のアイデアは、データベースを変更するためのパッケージを必要とせず、2つのデータベースcrdに対してenvを入れ、config accをreqに変更するだけです。そのfealの質問に自由に助けが必要な場合 –

答えて

0

「デフォルトのデータベース接続を動的に変更する」という変更に関する質問が必要です これはその答えですが、問題を解決します。

現在の要求またはプロセスでは、env値を変更すると効果がありません。変更が必要な場合は、設定値を直接入力します。

たとえば、リクエスト時に現在のデータベース接続データベース名を変更します。

//get old dbname 
$oldDbName = env("DB_DATABASE"); 


$env = new DotenvEditor(); 
$env->changeEnv([ 
    'DB_HOST' => $request['hostname'], 
    'DB_DATABASE' => $request['dbname'], 
    'DB_USERNAME' => $request['username'], 
    'DB_PASSWORD' => $request['dbpassword'], 
]); 

DB::disconnect(env("DB_CONNECTION")); 

Config::set('database.connections.' . env("DB_CONNECTION"), array(
     'driver' => 'mysql', //or $request['driver'], 
     'host'  => $request['hostname'], 
     'database' => $request['dbname'], 
     'username' => $request['username'], 
     'password' => $request['dbpassword'], 
     'charset' => 'utf8', 
     'collation' => 'utf8_general_ci', 
     'prefix' => '', 
)); 

//Trying reconnect database 
try { 
     DB::connection()->getPdo(); 
    } catch (\Exception $e) { 
     //revert old db if any error 
     DB::disconnect(env("DB_CONNECTION")); 
     Config::set('database.connections.' . env("DB_CONNECTION") .'.database', $oldDbName); 
    } 

参考になっリンク: https://laracasts.com/discuss/channels/general-discussion/l5-change-default-database-connection-dynamically?page=1

+0

ありがとうございます。 – Kruze

+0

@ Kruze pls、あなたの結果を待ちます。 – Qh0stM4N

関連する問題