2017-12-27 35 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을() 라인은 내가 여전히 이전 .env의 값입니다

[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 

같은 오류를 얻고있다. laravel을 다시로드하기위한 '재설정'명령은 무엇입니까? 감사.

+0

사용자 'XXXXX'@ '거부이'액세스 사용자 이름과 암호가 잘못되면 ** 나는 쇼핑하는 DB_DATABASE 및 DB_PASSWORD을 변경 관리 –

+0

localhost'' 오류가 발생합니다 및 P @ ssw0rd 각각이 **이 코드를 실행하여 아카이브를 시도 하시겠습니까 ?? 이 –

+0

으로 아무 생각이 나지 않으면 데이터베이스를 변경하기위한 패키지가 필요하지 않습니다. 단지 두 개의 데이터베이스 crds에 대해 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); 
    } 

helpfull 링크 : https://laracasts.com/discuss/channels/general-discussion/l5-change-default-database-connection-dynamically?page=1

+0

감사합니다. – Kruze

+0

@ Kruze pls, 결과를 기다려주십시오. – Qh0stM4N