Artisan migrate could not find driver
PhpLaravelPhp Problem Overview
I am trying to install Laravel. I have installed Xampp
, but when I try to setup my database using php artisan migrate
I get the error:
> [Illuminate\Database\QueryException] could not find driver (SQL: select * from information_schema.tables where table_schema = homestead > and table_name = migrations) [PDOException] could not find > driver
config/database.php
file has the relevant connections:
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
Any ideas?
Php Solutions
Solution 1 - Php
In your php.ini configuration file simply uncomment the extension:
;extension=php_pdo_mysql.dll
(You can find your php.ini file in the php folder where your stack server is installed.)
If you're on Windows make it: extension=php_pdo_mysql.dll
If you're on Linux make it: extension=pdo_mysql.so
And do a quick server restart.
If this isn't working for you, you may need to install pdo_mysql extension into your php library.
Solution 2 - Php
We have solved the same error by following the below steps.
linux command for this type of error occurred then, first of all, check your php.ini file
If your php.ini file exists then in configuration file simply uncomment the extension:
;extension=php_pdo_mysql.dll
Else follow below steps
step1:php -v
step2: Install php mysql extension
php 7.0 sudo apt-get install php7.0-mysql
php 7.1 sudo apt-get install php7.1-mysql
php 7.2 sudo apt-get install php7.2-mysql
php 7.3 sudo apt-get install php7.3-mysql
step3: service apache2 restart
step4: php artisan migrate
Solution 3 - Php
if you've installed php
and mysql
in your linux machine, php needs php-mysql
extention to communicate with mysql. so make sure you've also installed this extention using:
sudo yum install php-mysql
in redhat based machines.
and
sudo apt-get install php-mysql
in debian machines.
Solution 4 - Php
You also need to install the PHP-MySQL drivers:
sudo apt install php-mysql
Solution 5 - Php
Make sure that you've installed php-mysql, the pdo needs php-mysql to operate properly. If not you could simply type
sudo apt install php-mysql
Solution 6 - Php
I know this is a little late, nevertheless i'm answering this for anyone still experiencing this issue on windows (USING XAMPP).
Step 1. Verify that there is a mismatch in your PHP version. To do this, open routes/web.php and create a simple route to return the php information like so:
Route::get('/', function() {
return response()->json([ 'stuff' => phpinfo() ]);
})
and compare this with output from your command line
As we can see, in my case there is a mismatch, this usually happens if you have multiple versions of php installed.
Step 2. Add the php version being used by your xampp to your system path
Step 3. Verify that you have the extension enabled in your php.ini file. NB. Make sure you are editing the php.ini file that is shown under the 'loaded configuration file' entry in the results of phpinfo() command.
Solution 7 - Php
I am a Windows and XAMPP user. What works for me is adding extension=php_pdo_mysql.dll
in both php.ini
of XAMPP and php.ini
in C:\php\php.ini
.
Run this command in your cmd to know where your config file is
php -i | find /i "Configuration File
Solution 8 - Php
In Windows and PHP 7.4.5 go to php.ini and uncomment this line
extension=pdo_mysql
Solution 9 - Php
In your php.ini
configuration file simply uncomment the extension:
;extension=pdo_mysql
(You can find your php.ini file in the php folder where your server is installed.)
make this to
extension=pdo_mysql
now you need to configure your .env file in find DB_DATABASE=
write in that database name which you used than migrate like if i used my database and database name is "abc" than i need to write there DB_DATABASE=abc
and save that .env file and run command again
php artisan migrate
so after run than you got some msg like as:
php artisan migrate
Migration table created successfully.
Solution 10 - Php
If you are on linux systems
please try running sudo php artisan migrate
As for me,sometimes database operations need to run with sudo in laravel.
Solution 11 - Php
For anyone trying to enable the extension inside a Docker image:
RUN docker-php-ext-install pdo pdo_mysql \
&& docker-php-ext-enable pdo_mysql
Based on this answer.
Also props to @Krishna for shedding some light on the extension issue.
Solution 12 - Php
the same problem I got but after I run this line of code.
sudo apt install php-mysql
Done.
Solution 13 - Php
If you are matching with sqlite database:
In your php folder open php.ini file, go to:
;extension=pdo_sqlite
Just remove the semicolon and it will work.
Solution 14 - Php
I am so embarrassed. I know this doesn't help those using XAMPP, but I had to share. I have an out-of-the-box Laravel installation in Vagrant using a ScotchBox virtual machine running in Windows 10. And I am following the Digital Ocean tutorial. This should just work.
Like you, I ran php artisan migrate
and I got
> could not find driver (SQL: select * from sqlite_master where type = 'table' and name = migrations)
A few hours later, I thought
> Maybe I should try inside of the Vagrant shell?
I opened vagrant ssh
and ran php artisan migrate
again. There I got a different message:
> Could not open input file: artisan
A few more hours later, I got it right.
vagrant ssh
cd \var\www\
php artisan migrate
> Migration table created successfully
So, yeah. I was in the wrong shell and the wrong folder.
Solution 15 - Php
whilst sometimes you might have multiple php versions, you might also have a held-back version of php-mysql.. do a sudo dpkg -l | grep mysql | grep php and compare what you get from php -v
Solution 16 - Php
Go to .env file and change the following
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=
Change the DB_PASSWORD field to
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=" "
In my case it works
NOTE: If your password in mysql is null
Solution 17 - Php
in ubuntu or windows
-
Remove the ; from ;extension=pdo_mysql or extension=php_pdo_mysql.dll and add extension=pdo_mysql.so
restart xampp or wampp
-
install sudo apt-get install php-mysql
and
php artisan migrate
Solution 18 - Php
If you have multiple php versions installed applied all other options like UN commenting driver in php.ini and it does not work you might missed following step
-
Please check
php -v
from cmd -
Go to your environment variables by right clicking on PC and properties
-
Check path of your php key, it might be pointing to older version.
Solution 19 - Php
This error is the same for all SQL drivers, so for who are not using MySQL try install your SQL driver...
SQL Lite:
sudo apt install php-sqlite3
PostgreSQL:
sudo apt install php-pgsql