Resolving SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘provider’ in ‘field’

Posted by

The error indicates that there’s an attempt to access a column named ‘provider’ in a database table, but this column doesn’t exist. Laravel Passport, starting from version 10.0, introduces support for multiple guard user providers, requiring the addition of a ‘provider’ column to the ‘oauth_clients’ database table.

Solution: Upgrading Passport and Adding the ‘provider’ Column

To resolve this issue, you need to upgrade Passport to version 10.0 or later and add the ‘provider’ column to the ‘oauth_clients’ table. Here are the steps:

1. Upgrade Passport to Version 10.0

In your terminal, navigate to your Laravel project’s root directory and run the following Composer command to upgrade Passport:

composer require laravel/passport:^your version

2. Add the ‘provider’ Column to the ‘oauth_clients’ Table

After upgrading Passport, you need to add the ‘provider’ column to the ‘oauth_clients’ table. If you have not previously published the Passport migrations, you can manually add the column using a migration.

Create a new migration using the following command:

php artisan make:migration add_provider_to_oauth_clients --table=oauth_clients

Open the generated migration file (located in the ‘database/migrations’ directory) and add the ‘provider’ column definition:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddProviderToOauthClients extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('oauth_clients', function (Blueprint $table) {
            $table->string('provider')->after('secret')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('oauth_clients', function (Blueprint $table) {
            $table->dropColumn('provider');
        });
    }
}

Run the migration to apply the changes:

php artisan migrate

After completing these steps, retry the operation that resulted in the ‘Column not found: 1054 Unknown column ‘provider’ in ‘field” error. The ‘provider’ column should now exist in the ‘oauth_clients’ table, resolving the issue.

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] Resolving SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘provider’ in ‘field’ […]

1
0
Would love your thoughts, please comment.x
()
x