laravel 5.8 中如何设置外键约束不正确

how to set Foreign key constraint is incorrectly formed in laravel 5.8

我有一些 table 需要迁移,接下来是。如果我尝试将 table 迁移到服务器数据库,它会显示一般错误:1005。 我在底部给出错误和服务器详细信息。请帮助我顺利迁移。

1.)用户

Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

2.)公司

Schema::create('companies', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->longText('description');
            $table->unsignedInteger('user_id');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
        });

3.projects

Schema::create('projects', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->longText('description');
            $table->unsignedInteger('company_id');
            $table->unsignedInteger('user_id');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
            $table->foreign('company_id')->references('id')->on('companies');
        });

服务器详细信息

server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server connection: SSL is not being used Documentation
Server version: 10.1.38-MariaDB - mariadb.org binary distribution
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)
DB Name: laravel

错误:

 Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1005 Can't create table `laravel`.`#sql-91c_30` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `companies` add constraint `companies_user_id_foreign` foreign key (`use
r_id`) references `users` (`id`))

据我所知,在创建 bigInteger 主键和整数外键时存在数据类型不匹配的问题,

Schema::create('companies', function (Blueprint $table) {
...
$table->unsignedBigInteger('user_id');
});

在其他表中

Schema::create('projects', function (Blueprint $table) {
...
$table->unsignedBigInteger('company_id');
$table->unsignedBigInteger('user_id');
});

执行此操作并再次检查。