首页 > 解决方案 > Laravel - 不正确的表定义;只能有一个自动列,并且必须将其定义为键”

问题描述

在我的 Laravel-8 应用程序中,我得到了以下代码:

public function up()
{
    Schema::create('user_log_activities', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('user_id')->nullable()->unsigned();
        $table->string('log_url', 300)->nullable();
        $table->string('log_method', 20)->nullable();
        $table->string('log_type', 50)->nullable();
        $table->string('subject', 200)->nullable();
        $table->string('subject_hint', 20)->nullable();
        $table->integer('company_id', 11)->nullable();
        $table->string('id_address', 64)->nullable();
        $table->string('agent', 300)->nullable();
        $table->timestamps();
    });
}

问题在这里:

$table->bigInteger('user_id')->nullable()->unsigned();

user_id 不是自动增量,但我收到此错误:

PDOException::("SQLSTATE[42000]: 语法错误或访问冲突:1075 表定义不正确;只能有一个自动列,并且必须定义为键")

我已经尝试了几种方法,但没有工作

我该如何解决?

谢谢

标签: laravel

解决方案


问题是您使用整数的长度。11 计为自动增量值

$table->integer('company_id', 11)->nullable();

从中删除长度

$table->integer('company_id')->nullable();

如果是外键,则使用与 user_id 相同的键


推荐阅读