You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel运行迁移报MongoDB\Exception\InvalidArgumentException错误求助

错误原因

这个报错和你Schema里定义的字段类型无关,问题出在unique方法的传参不符合MongoDB Laravel驱动的语法要求:

  • 普通MySQL环境下,unique()的第二个参数可传入整数,代表字符串字段的前缀索引长度
  • 但MongoDB驱动中,unique()的第二个参数接收的是字符串类型的自定义索引名,你传入了整数64,自然触发「预期name选项为string类型却收到int」的报错。

可行解决方案

  • 方案1:直接删除第二个参数即可,MongoDB对字符串字段创建唯一索引不需要指定前缀长度,修改后代码如下:
public function up()
{
    Schema::create('personal_access_tokens', function (Blueprint $table) {
        $table->morphs('tokenable');
        $table->index('name');
        $table->unique('token');
        $table->text('abilities')->nullable();
        $table->timestamp('last_used_at')->nullable();
        $table->timestamps();
    });
}
  • 方案2:如果你需要自定义唯一索引的名称,把第二个参数改为字符串类型的索引名即可,示例:
    $table->unique('token', 'personal_access_tokens_token_unique');

内容的提问来源于stack exchange,提问作者Tayyab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:45:04