Artisan migrate could not find driver

PhpLaravel

Php Problem Overview


I am trying to install Laravel. I have installed Xampp, but when I try to setup my database using php artisan migrateI 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()   ]);
})

phpinfo

and compare this with output from your command line

enter image description here

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 enter image description here

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. enter image description here

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

  1. Please check php -v from cmd

  2. Go to your environment variables by right clicking on PC and properties

  3. 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBomberView Question on Stackoverflow
Solution 1 - PhpKrishna Kant ChourasiyaView Answer on Stackoverflow
Solution 2 - PhpHiren SpaculusView Answer on Stackoverflow
Solution 3 - PhpAli_HrView Answer on Stackoverflow
Solution 4 - PhpHappy PatelView Answer on Stackoverflow
Solution 5 - PhpMD Nasirul IslamView Answer on Stackoverflow
Solution 6 - PhpEwomazino UkahView Answer on Stackoverflow
Solution 7 - PhpPhuc LeView Answer on Stackoverflow
Solution 8 - PhpKevin MontalvoView Answer on Stackoverflow
Solution 9 - PhpCHAVDA MEETView Answer on Stackoverflow
Solution 10 - Phplwin moe heinView Answer on Stackoverflow
Solution 11 - PhpgyohzaView Answer on Stackoverflow
Solution 12 - PhpY. Joy Ch. SinghaView Answer on Stackoverflow
Solution 13 - PhpHo360Code.devView Answer on Stackoverflow
Solution 14 - PhpPhilip YoungView Answer on Stackoverflow
Solution 15 - PhpbaradhiliView Answer on Stackoverflow
Solution 16 - PhprajhemView Answer on Stackoverflow
Solution 17 - PhpNetwonsView Answer on Stackoverflow
Solution 18 - PhpImran QamerView Answer on Stackoverflow
Solution 19 - PhpFellipe SanchesView Answer on Stackoverflow