手工迁移错误“ Class‘ Doctrine DBAL Driver PDOMySql Driver’not found”,

在尝试运行迁移时,我得到了 Artisan 迁移错误

错误: Class 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' not found

我已经阅读了这里的问题,也看到了补充说明:

Json 的必要部分中的 doctrine/dbal": "~2.3

Github 错误报告

然而,我不明白发生了什么事。我几天前创建的表没有问题。

在 comper.son 中添加了这个依赖项之后,我不知道要做什么。

我不想不小心更新任何其他软件包。

85909 次浏览

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.

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!!

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.

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

composer require doctrine/dbal

For more information check laravel #Modifying Columns

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

Run

composer update

It will install your missing packages like PDOMySql.

Or

Delete vendor folder and run

composer install

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.

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

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.

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

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

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

composer require doctrine/dbal:2.*

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

just run

composer update

worked for me Laravel 8

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;');
}
# For Laravel 6x/7x:
composer require doctrine/dbal:"^2.0"
    

# For Laravel >= 8x:
composer require doctrine/dbal

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

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