artisan migration error "Class 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' not found",

PhpLaravelSymfonyLaravel 5

Php Problem Overview


When trying to run a migration I get the error Artisan migration

> error:Class 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' not found

I have read the questions here and also see the notes to add:

doctrine/dbal": "~2.3 in the requires section of composer.json

Github Bug Report

However, I don't understand what has happened. I created table a few days ago with no issue.

I can't figure out what to do after adding that dependency in composer.son.

I don't want to accidentally update any other packages.

Php Solutions


Solution 1 - Php

The doctrine/dbal dependency needs to be added to your composer.json

composer require doctrine/dbal

For more information check laravel #Modifying Columns

Solution 2 - Php

In my case both composer install and composer install was not working giving a same error “Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found”,

The changes that i made to make this workable are given below

composer.json file changed

 "doctrine/dbal": "^3.0",

this changed with

"doctrine/dbal": "^2.0",

then run the command

composer update 

Solution 3 - Php

You have to downgrade the current version, this is what worked for me:

composer require doctrine/dbal:2.*

Solution 4 - Php

If you using doctrine 3, downgrade to "doctrine/dbal": "^2.10.3"(I don't know does laravel updated migration tools for doctrine 3. If do, you should update laravel tools). They renamed class and Doctrine\\DBAL\\Driver\\PDOMySql\\Driver not exists

Solution 5 - Php

Laravel

Who ever is facing this issue while having doctrine/dbal": "3.0" aleady required: downgrade it back to

"doctrine/dbal": "^2.10".

If you still face issues for example getting

> Laravel\Passport\Bridge\AccessToken::__toString() must not throw an > exception

You should require a prev version of lcobucci/jwt. It just got auto updated to 3.4, which caused these issues for me. Took me around 3-4 hours to track everything down to this. Hope it helps someone else too.

composer require lcobucci/jwt 3.3.3

Solution 6 - Php

As already said, use composer require doctrine/dbal, if for whatever reason that doesn't work, use a lower version like composer require doctrine/dbal:^2.12.1 and then run composer dumpautoload -o.

Solution 7 - Php

# For Laravel 6x/7x:    
composer require doctrine/dbal:"^2.0"
    
# For Laravel >= 8x:    
composer require doctrine/dbal

Solution 8 - Php

Run

composer update

It will install your missing packages like PDOMySql.

Or

Delete vendor folder and run

composer install

Solution 9 - Php

This message shows up if you want to edit column in a database.

To solve it do:

  • add doctrine/dbal dependency to composer.json
  • and use the composer require doctrine/dbal command

Solution 10 - Php

If you are using laravel 7 then please downgrade the "doctrine/dbal"

From

doctrine/dbal:"^3.1"

To

doctrine/dbal:"^2.0"

and then run

composer update

It works for me

Solution 11 - Php

just run

composer update

worked for me Laravel 8

Solution 12 - Php

Before modifying a column, be sure to add the doctrine/dbal dependency to your composer.json file. The Doctrine DBAL library is used to determine the current state of the column and create the SQL queries needed to make the specified adjustments to the column:

composer require doctrine/dbal

Solution 13 - Php

I had the same problem with Laravel 8.

composer require doctrine/dbal
composer update 

didn't help me to solve the issue.

I used DB::statement('SQLQuery') to solve the issue. I used below code to rename the column.

public function up()
{
    Schema::table('customer_profile', function (Blueprint $table) {
      //  $table->renameColumn('user_type_id','plan_id');
    });
    DB::statement('ALTER TABLE `customer_profile` CHANGE `user_type_id` `plan_id` BIGINT(20) NOT NULL;');
}

Solution 14 - Php

In my case, it was due to the version of php that did not meet the necessary requirements for that version of the package.

So, updating to any previous version is not the solution, you have to look at the requirements of each version of the package and confirm that your project complies with them.

Here the specification of the requirements: https://packagist.org/packages/doctrine/dbal#3.1.3

And the command to update the library would be:

composer require doctrine/dbal:number_of_your_indicated_version

For example:

composer require doctrine/dbal:^2.13.5

Solution 15 - Php

Can you share your current composer.json?

After composer.json update, you can execute composer install. It won't update existing packages (because of generated composer.lock), it'll only install new ones.

What has changes since your last migration?

It's the same project in the same directory? If so, it should be there.

Solution 16 - Php

OK thanks so much for the help. Stupidly, I had read that to do some other operations, that missing driver is called and I had tried to run a migration the other day to change a column name and what I completely forgot was that subsequent migrate runs are trying to still run that bad one. Once i remembered and deleted the update column name migration, my add table migration ran fine. With a project due in a few weeks, no package updates for me!!

Solution 17 - Php

I saw this: To rename a column, you may use the renameColumn method on the Schema builder. Before renaming a column, be sure to add the doctrine/dbal dependency to your composer.json file:

it maybe work.

Solution 18 - Php

if you are using PhpStorm editor for your project open Terminal tab and run this command:

composer require doctrine/dbal

enter image description here

also you can open command window in root of your project and run that command.

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
QuestionNancymicView Question on Stackoverflow
Solution 1 - PhpMahbubView Answer on Stackoverflow
Solution 2 - PhpAvinash RautView Answer on Stackoverflow
Solution 3 - PhpMiraTechView Answer on Stackoverflow
Solution 4 - Phpunicorn developerView Answer on Stackoverflow
Solution 5 - PhpKjell WeibrechtView Answer on Stackoverflow
Solution 6 - PhpxyLuzView Answer on Stackoverflow
Solution 7 - PhpDEV Tiago FrançaView Answer on Stackoverflow
Solution 8 - PhpMahendra PratapView Answer on Stackoverflow
Solution 9 - PhpTarek MesalamView Answer on Stackoverflow
Solution 10 - PhpYogendra KinjaView Answer on Stackoverflow
Solution 11 - PhpAnas Bin NumanView Answer on Stackoverflow
Solution 12 - PhpMRMPView Answer on Stackoverflow
Solution 13 - PhpVetriselvanView Answer on Stackoverflow
Solution 14 - PhpCaro PérezView Answer on Stackoverflow
Solution 15 - PhpMateusz SipView Answer on Stackoverflow
Solution 16 - PhpNancymicView Answer on Stackoverflow
Solution 17 - PhpSilenceView Answer on Stackoverflow
Solution 18 - PhpA HashemiView Answer on Stackoverflow