Michael Joseph Aubry
Michael Joseph Aubry

Reputation: 13402

How to connect to mysql with laravel?

This is such a simple basic question I don't think many people are asking this but simply how do I connect to MySQL through localhost phpmyadmin with Laravel (I've searched, and there is some stuff, but I need to ask because I am a noob and I'd like to ask, the stuff I saw I don't quite get 100% or I tried and it didn't help)?

I am working with backbone.js and am brand new to laravel, I installed laravel inside C:\wamp\www\laravel-project

I tried

c:\wamp\www\laravel-project> php artisan migrate:make create_tasks_table --table tasks --create

And

c:\wamp\www\laravel-project> php artisan migrate

I expect to have to define the database information, I checked C:\wamp\www\laravel-project\app\config\database.php and it looks correct, mySQL is set on the defaults root being the user name, and '' empty being the password.

The error in the command line I get after running php artisan migrate is

[PDOException]
SQLSTATE[HY000] [1049] Unknown database 'database'    

I am using Windows 8, and Wamp for my localhost server, it of course includes phpmyadmin and mySql. So I am sure there are tons of ways to use MySQL but I don't think I am setting up laravel and phpmyadmin properly.

So any insight would be amazing, easy points.

EDIT:

Thinking this through maybe I need to create a database named database Let me try that. be back soon. Okay, I'll answer my question or someone can, just in case someone searches this topic... it is KEY to make sure the database defined in C:\wamp\www\laravel-project\app\config\database.php matches a database that exists inside your phpmyadmin. No brainer!

Upvotes: 50

Views: 205757

Answers (7)

Employee 451
Employee 451

Reputation: 61

I spent a lot of time trying to figure this one out. Finally, I tried shutting down my development server and booting it up again. Frustratingly, this worked for me. I came to the conclusion, that after editing the .env file in Laravel 5, you have to exit the server, and run php artisan serve again.

Upvotes: 2

Maulik patel
Maulik patel

Reputation: 2432

First Create the database connection 

    in laravel
    <?php
    'mysql' => [
    'read' => [
        'host' => '192.168.1.1',
    ],
    'write' => [
        'host' => '196.168.1.2'
    ],
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
],


    ?>
    in laravel Database cofig file located here (config/database.php).

Upvotes: -14

Mohammed Safeer
Mohammed Safeer

Reputation: 21535

In Laravel 5, there is a .env file,

It looks like

APP_ENV=local
APP_DEBUG=true
APP_KEY=YOUR_API_KEY

DB_HOST=YOUR_HOST
DB_DATABASE=YOUR_DATABASE
DB_USERNAME=YOUR_USERNAME
DB_PASSWORD=YOUR_PASSWORD

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null

Edit that .env There is .env.sample is there , try to create from that if no such .env file found.

Upvotes: 86

Ali
Ali

Reputation: 1462

It's also much more better to not modify the app/config/database.php file itself... otherwise modify .env file and put your DB info there. (.env file is available in Laravel 5, not sure if it was there in previous versions...)

NOTE: Of course you should have already set mysql as your default database connection in the app/config/database.php file.

Upvotes: 6

gerobk
gerobk

Reputation: 724

Laravel makes it very easy to manage your database connections through app/config/database.php.

As you noted, it is looking for a database called 'database'. The reason being that this is the default name in the database configuration file.

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database', <------ Default name for database
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

Change this to the name of the database that you would like to connect to like this:

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'my_awesome_data', <------ change name for database
    'username'  => 'root',            <------ remember credentials
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

Once you have this configured correctly you will easily be able to access your database!

Happy Coding!

Upvotes: 39

Patrik Fuhrmann
Patrik Fuhrmann

Reputation: 977

You probably only forgot to create database. Enter your PHPMyAdmin and do it from there.

Edit: Definitely don't go with Maulik's answer. Not only it is using mysql_ extenstion (which is commonly recognized bad practice), Laravel is also taking care of your connections using PDO.

Upvotes: 1

user3035039
user3035039

Reputation: 71

Maybe you forgot to first create a table migrations:

php artisan migrate:install

Also there is a very userful package Generators, which makes a lot of work for you https://github.com/JeffreyWay/Laravel-4-Generators#views

Upvotes: 7

Related Questions