先执行 vendor:publish --tag="sanctum-migrations" 发布迁移文件,再运行 php artisan migrate 创建 personal_access_tokens 表;二者顺序不可颠倒,否则 createToken() 会失败。

执行 Laravel Sanctum 的 vendor:publish 和 migrate 是初始化认证环境的两个关键步骤,顺序不能颠倒,且每步都有明确目的和常见陷阱。
发布 Sanctum 的迁移文件
这一步把 Sanctum 自带的数据库迁移脚本复制到你的项目中,供后续执行:
- 在终端运行:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" - 或更精准地只发布迁移(推荐,尤其在 Sanctum 4.0+):
php artisan vendor:publish --tag="sanctum-migrations" - 执行后检查
database/migrations/目录下是否生成了类似create_personal_access_tokens_table.php的文件;没看到说明发布失败,需确认laravel/sanctum是否已通过 Composer 正确安装
运行数据库迁移
只有迁移文件到位后,才能创建 Sanctum 所需的数据表:
- 直接运行:
php artisan migrate - 该命令会在数据库中新建
personal_access_tokens表——这张表是所有 Token 操作的基础,没有它,$user->createToken()会静默失败或报错 - 如果之前已运行过迁移且表已存在,再次执行不会重复建表;如需重置,可先
php artisan migrate:rollback再重迁
验证是否成功
迁移完成后,可通过简单检查确认环境就绪:
- 登录 MySQL 或 phpMyAdmin,查看数据库中是否存在
personal_access_tokens表 - 在 Tinker 中测试:
php artisan tinker→App\Models\User::first()->createToken('test'),若返回 Token 实例,说明迁移与模型集成均正常 - 注意:此时仅完成底层准备,还需配置守卫、中间件和模型 trait 才能真正启用认证











