首页 > 解决方案 > Laravel Sanctum 创建令牌时出错

问题描述

我正在尝试设置Sanctum登录到我的Laravelapi。我正在关注文档(也在线交叉引用了其他文章),但是当我尝试使用以下命令获取令牌时出现错误createToken

Illuminate\Database\QueryException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'd0970066-b343-419a-a348-9d43df3c13b4' for column mydbpersonal_access_tokens. tokenable_id- 在第 1 行 (SQL: 插入personal_access_tokens( name, token, abilities, tokenable_id, tokenable_type, updated_at, created_at) 值 (mydevice, 2fde2030c7dcede42cbf76124b77fe0edbbff75fe01ae57ef25a3f582123ee93, ["*"], d0970066-b343-419a-a348-9d43df3c10b2, 20700066-b343-419a-a348-9d43df3c13b4, App :19:17, 2021-07-12 13:19:17)) 在文件 D:\dev\...\vendor\laravel\framework\src\Illuminate\Database\Connection.php 第 692 行

看来该tokenable_id列期望的值与 Sanctum 给出的值不同。数据库想要一个bigint但正在获得一个string. 为什么会这样?


这是迁移文件:

public function up()
    {
        Schema::create('personal_access_tokens', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->morphs('tokenable');
            $table->string('name');
            $table->string('token', 64)->unique();
            $table->text('abilities')->nullable();
            $table->timestamp('last_used_at')->nullable();
            $table->timestamps();
        });
    }

桌子:

在此处输入图像描述

调用此行时发生错误。

return $user->createToken($request->device_name)->plainTextToken;

完整代码在这里

标签: laravellaravel-8laravel-sanctum

解决方案


推荐阅读