【Laravel8】sanctumを使ってトークンを作成する際に、SQLエラーとなる場合の対処方法
sanctumを使って、createTokenを行う際に以下のようなエラーが出た。
"SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: \"9357bb40-3353-4910-adae-5aa650bf0c36\" (SQL: insert into \"personal_access_tokens\" (\"name\", \"token\", \"abilities\", \"tokenable_id\", \"tokenable_type\", \"updated_at\", \"created_at\") values ($request->user()->user_id, 7177becea6ffb882e6181ede027bd00079d73df22e2e0b07c9d1be005a8f2b60, [\"*\"], 9357bb40-3353-4910-adae-5aa650bf0c36, App\\Models\\User, 2021-05-03 22:55:40, 2021-05-03 22:55:40) returning \"id\")"
personal_access_tokensテーブルのidカラムにbigintではなく、uuid(“9357bb40-3353-4910-adae-5aa650bf0c36\")が入ってるから出ているエラーのようです。
原因
ユーザーテーブルのprimarykeyをuuidに変更している場合に起きるようです。
解決方法
database/migrations/2019_12_14_000001_create_personal_access_tokens_table.phpファイルの"morphs"を"uuidMorphs"に変更するだけ。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePersonalAccessTokensTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('personal_access_tokens', function (Blueprint $table) {
$table->bigIncrements('id');
// $table->Morphs('tokenable'); ←削除
$table->uuidMorphs('tokenable'); // 追加
$table->string('name');
$table->string('token', 64)->unique();
$table->text('abilities')->nullable();
$table->timestamp('last_used_at')->nullable();
$table->timestamps();
});
}
// 以下省略
ディスカッション
コメント一覧
まだ、コメントがありません