How to connect to mysql with laravel?
This is such a simple basic question I don't think there is much people asking this but simply how do I connect to mySql through localhost phpmyadmin with laravel (I've searched, 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:
Actually 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!
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.
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!
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
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.
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.