artronics
artronics

Reputation: 1496

how to change database name in laravel? changing config>database.php doesn't work

I created a database "mydatabase" and I changed config>database.php to:

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'mysite.local',
        'database'  => 'mydatabase',
        'username'  => 'myusername',
        'password'  => 'mypassword',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

now inside route.php i have:

    Route::get('/', function()
{
    $data=DB::table('user')->get();
    return $data;
});

laravel sends an Exception which shows that it tries to access:

homestead.user

instead of

mydatabase.user

now if i change route.php to:

    Route::get('/', function()
{
    $data=DB::table('mydatabase.user')->get();
    return $data;
});

it will work!

Also according to this question I changed config>local>database.php to:

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'mysite.local',
        'database'  => 'mydatabase',
        'username'  => 'myusername',
        'password'  => 'mypassword',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

But this time, even

$data=DB::table('mydatabase.user')->get();

doesn't work either! This time it thrown another exception :

PDOException (2002) 
SQLSTATE[HY000] [2002] Connection refused

My question is why laravel tries to use "homestead" database instead of "mydatabase"? should I change something else?

EDIT: I changed the config/local/database.php to

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'mydatabase',
        'username'  => 'myusername',
        'password'  => 'mypassword',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

and everything works fine! (I changed mysite.local to localhost) I've not define local host in my /etc/hosts so why laravel looks for that host?

Upvotes: 1

Views: 18449

Answers (2)

Muhammad Sadiq
Muhammad Sadiq

Reputation: 1155

  • The problem is in your config/database.php with default connection, currently default connection setting is getting from .env file as

    'default' => env('DB_CONNECTION', 'mysql'),

So change it to :

'default' => 'mysql',

Upvotes: 0

Relaxing In Cyprus
Relaxing In Cyprus

Reputation: 2006

Your host should be localhost. The term localhost means the computer which laravel is running on. mysite.local is presumably a virtual site residing on this computer. It doesn't have its own installation of Mysql. All virtual sites will share the same mysql. They will just use different databases.

Thats how my setups work anyway.

Upvotes: 1

Related Questions