यह मेरा डेटाबेस कनेक्शन है जिसे मैंने निर्दिष्ट किया है।
'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
मान मिल रहा है। लेकिन जब मैं अद्यतन कॉन्फ़िगरेशन के साथ उसी कनेक्शन से फिर से कनेक्ट होता हूं, तो मुझे अपना डेटाबेस नाम नहीं मिल रहा है। कनेक्शन किसी डेटाबेस से संबद्ध नहीं हो रहा है।
4 जवाब
आप कनेक्शन को purge
करने का प्रयास कर सकते हैं ताकि यह डिस्कनेक्ट हो जाए और इसे डेटाबेस मैनेजर पर कैश से हटा दें:
...
Config::set('database.connections.mysql_test.database', $db);
DB::purge('mysql_test');
dump(DB::connection('mysql_test')->getDatabaseName());
कॉन्फ़िगरेशन मान बदलने के बाद आपको डीबी को फिर से कनेक्ट करने की आवश्यकता है
DB::reconnect("mysql_test");
DB::connection('mysql_test')->getDoctrineConnection()->close();
यह भी काम नहीं कर रहा है
डीबी :: पर्ज() ने इसे मेरे लिए तय किया। ऐसा लगता है कि Laravel 8.x अपग्रेड के बाद इसकी जरूरत थी। लारवेल कार्यों से पहले जरूरत पड़ने पर डेटाबेस कनेक्शन स्विच किया था। कुछ अपडेट के बाद वे अब नहीं रहे।
मुझे 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);
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।