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

Laravel迁移报错:SQLSTATE[42000] 表定义错误(仅一个自增列)

问题解决:Laravel迁移报错1075(多自增列冲突)

问题原因

你写的$table->tinyInteger('status', 2);触发了错误,因为Laravel的Blueprint中,tinyInteger方法的第二个参数是是否设置自增(布尔类型),而非字段长度。传入数字2会被解析为true,导致status被设为自增列,而表中已经有id这个自增主键,MySQL不允许单表存在多个自增列,因此抛出1075错误。

解决方法

根据你的需求选择对应写法:

  • 若只是想设置字段的显示宽度(仅影响MySQL的显示,不限制取值范围),使用->length(2)链式调用:
    $table->tinyInteger('status')->length(2);
    
  • 若不需要设置显示宽度,直接定义字段即可:
    $table->tinyInteger('status');
    
  • 如果status是用来存固定的状态枚举值(比如0=未开始,1=进行中,2=已完成),更推荐使用enum类型,可读性更强:
    $table->enum('status', ['pending', 'progress', 'completed']);
    

修正后的完整迁移代码

public function up()
{
    Schema::create('progress', function (Blueprint $table) {
        $table->id();
        $table->foreignId('state_id')->constrained()->cascadeOnDelete();
        $table->foreignId('city_id')->constrained()->cascadeOnDelete();
        $table->text('address');
        $table->string('project_name');
        // 这里替换为你需要的写法
        $table->tinyInteger('status')->length(2);
        $table->timestamps();
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:48:17