복붙노트

[REDIS] Laravel 6 설정 () -> GET ( 'database.connections.mysql')는 DB와 일치하지 않는 : 연결 ()

REDIS

Laravel 6 설정 () -> GET ( 'database.connections.mysql')는 DB와 일치하지 않는 : 연결 ()

내 로컬 환경에서 여러 개의 입주자로 일하고 레디 스 (인증 필요). 내가 대리를 사용하고있는 프로젝트를 제공합니다.

이 경우를 위해 나는이 두 연결을 해결하고 있습니다 :

- basic_foo (is defined in my .env)
- tenant_foo (is the one to change to during a request)

지금까지 나는 성공적과 같이 연결을 변경 :

config()->set('database.connections.mysql', 
       array_merge(
        config()->get('database.connections.mysql') , 
        ['database' => 'tenant_foo']
    ); 

그러나, 지금은 유지 또는 기본 연결로 다시 떨어지는 쿼리 빌더에 문제를보고하고있다.

내가 실행할 때 tenant_foo의 예상 연결 결과 (레디 스에 대한 동일) 도착

dd(config()->get('database.connections.mysql'));

내가 실행할 때 내가 basic_foo의 잘못된하지만 분명히 활성 결과를 얻을 수

dd(\DB::connection()); // returns Illuminate\Database\MySqlConnection

전부 그래서 응용 프로그램은이를 분명히 \ 데이터베이스 \ QueryException를 반환합니다

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'basic_foo.table_bar' doesn't exist...

어디서 검색해야

'tenant_foo.table_bar'

는 config 배열이 basic_foo 동일하게 유지로 간단하게 아래처럼 tenant_foo에 데이터베이스 이름을 변경하면, 충분하지 않습니다.

\DB::connection()->setDatabaseName('tenant_foo');

해결법

  1. ==============================

    1.동적으로 변경 데이터베이스 이름에 당신은 사용해야합니다 :

    동적으로 변경 데이터베이스 이름에 당신은 사용해야합니다 :

    DB::disconnect(); 
    Config::set('database.mysql.database', 'tenant_foo'); 
    DB::reconnect();
    
  2. from https://stackoverflow.com/questions/59580981/laravel-6-config-getdatabase-connections-mysql-not-matching-dbconnection by cc-by-sa and MIT license