यह मेरा डेटाबेस कनेक्शन है जिसे मैंने निर्दिष्ट किया है।

'mysql_test' => [
          'driver' => 'mysql',
          'host' => env('DB_HOST', '127.0.0.1'),
          'port' => env('DB_PORT', '3306'),
          'database'=> '',
          'username' => env('DB_USERNAME', 'forge'),
          'password' => env('DB_PASSWORD', ''),
          'unix_socket' => env('DB_SOCKET', ''),
          'charset' => 'utf8mb4',
          'collation' => 'utf8mb4_unicode_ci',
          'prefix' => '',
          'prefix_indexes' => true,
          'strict' => true,
          'engine' => null,
      ],

अब मैं कोड से database मान को बदलने की कोशिश कर रहा हूं और फिर इस तरह डेटाबेस से कनेक्शन कर रहा हूं

 for( $i = 1; $i <=4 ; $i++)
    {
      $db='test_'.$i;
    DB::connection('mysql_test')->statement('CREATE DATABASE '.$db.';' );

   Config::set('database.connections.mysql_test.database' , $db);
    error_log(config('database.connections.mysql_test.database'));
    DB::reconnect('mysql_test');
    error_log(DB::connection('mysql_test')->getDatabaseName());

  }

config का मान पहले error_log की तरह बदला जा रहा है, मुझे अपना बदला हुआ config मान मिल रहा है। लेकिन जब मैं अद्यतन कॉन्फ़िगरेशन के साथ उसी कनेक्शन से फिर से कनेक्ट होता हूं, तो मुझे अपना डेटाबेस नाम नहीं मिल रहा है। कनेक्शन किसी डेटाबेस से संबद्ध नहीं हो रहा है।

1
Abhiraj Tulsyan 13 जून 2020, 18:25
.env फ़ाइल में डेटाबेस मान बदलें और फिर अपने कारीगर सर्वर को पुनरारंभ करें और फिर जांचें कि यह बदल जाएगा।
 – 
Mohsin Abbas
13 जून 2020, 18:28
मैं इसे केवल कोड से बदलना चाहता हूं और मैं कारीगर सर्वर नहीं चला रहा हूं। मैंने परीक्षण डेटाबेस सेटअप करने के लिए एक आदेश दिया है।
 – 
Abhiraj Tulsyan
13 जून 2020, 18:59
"जब मैं फिर से जुड़ता हूं" इसका क्या अर्थ है, किस संदर्भ में? ... प्रक्रियाओं के बीच कोई रन टाइम परिवर्तन साझा नहीं किया जाता है
 – 
lagbox
13 जून 2020, 19:01
मैं डेटाबेस कनेक्शन से पुन: कनेक्ट कर रहा हूं। हम एक ही प्रक्रिया पर विभिन्न डीबी कनेक्शन से कनेक्ट क्यों नहीं हो सकते हैं? @लगाबॉक्स
 – 
Abhiraj Tulsyan
13 जून 2020, 19:04
"हम एक ही प्रक्रिया पर अलग-अलग डीबी कनेक्शन से क्यों नहीं जुड़ सकते?" हम एक ही प्रक्रिया पर विभिन्न कनेक्शन से जुड़ सकते हैं।
 – 
Tian Ming
13 जून 2020, 19:05

4 जवाब

सबसे बढ़िया उत्तर

आप कनेक्शन को purge करने का प्रयास कर सकते हैं ताकि यह डिस्कनेक्ट हो जाए और इसे डेटाबेस मैनेजर पर कैश से हटा दें:

...

Config::set('database.connections.mysql_test.database', $db);

DB::purge('mysql_test');

dump(DB::connection('mysql_test')->getDatabaseName());
3
lagbox 13 जून 2020, 19:17
आपने सर, मेरा दिन बचा लिया। धन्यवाद।
 – 
pr1nc3
27 अगस्त 2020, 13:00

कॉन्फ़िगरेशन मान बदलने के बाद आपको डीबी को फिर से कनेक्ट करने की आवश्यकता है

DB::reconnect("mysql_test");

0
Tian Ming 13 जून 2020, 18:31
नहीं, वही परिणाम। नहीं मिल रहा।
 – 
Abhiraj Tulsyan
13 जून 2020, 18:49
DB::connection('mysql_test')->getDoctrineConnection()->close(); यह भी काम नहीं कर रहा है
 – 
Abhiraj Tulsyan
13 जून 2020, 18:53
1
इसका परिणाम क्या है? error_log (डीबी :: कनेक्शन ('mysql_test') -> getDatabaseName ());
 – 
Tian Ming
13 जून 2020, 18:59
यह खाली आउटपुट दे रहा है
 – 
Abhiraj Tulsyan
13 जून 2020, 19:00

डीबी :: पर्ज() ने इसे मेरे लिए तय किया। ऐसा लगता है कि Laravel 8.x अपग्रेड के बाद इसकी जरूरत थी। लारवेल कार्यों से पहले जरूरत पड़ने पर डेटाबेस कनेक्शन स्विच किया था। कुछ अपडेट के बाद वे अब नहीं रहे।

0
HaroldS 21 जिंदा 2021, 17:56

मुझे Laravel 5.7 . पर एक ही समस्या का सामना करना पड़ा

मेरे मामले में DB::purge('mysql_test') और DB::reconnect("mysql_test") ने भी काम नहीं किया इसलिए मैंने यह किया:

$db_connection_name = 'mysql_test'; // Connection name that i wanted to connect
Config::set('database.default', $db_connection_name);
0
Dharman 14 मई 2021, 17:32