我正在终端上执行命令,得到此错误以构建产品表

时间:2019-04-09 20:43:29

标签: laravel

我正在Laravel应用程序中创建产品表

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->string('name');
        $table->integer('price');
        $table->timestamps();
        $table->foreign('user_id')
            ->references('id')
            ->on('users');
    });
}

然后,我正尝试迁移数据库

$ php artisan migrate

但是,在迁移产品表时出现此错误:

  

异常跟踪:

     

1 PDOException::(“ SQLSTATE [HY000]:一般错误:1005无法创建表`apps。`#sql-30d4_61`(错误号:150”外键约束格式不正确“)”)        C:\ xampp \ htdocs \ LTCRUDAUT \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:458

     

2 PDOStatement :: execute()        C:\ xampp \ htdocs \ LTCRUDAUT \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:458

我该如何解决?

1 个答案:

答案 0 :(得分:1)

这可能是因为Laravel现在默认将bigIncrements()而不是increments()用作用户表迁移中的id字段。

对于外键,必须将它们设置为相同的字段大小。要解决:

{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->bigInteger('user_id')->unsigned();
        $table->string('name');
        $table->integer('price');
        $table->timestamps();
        $table->foreign('user_id')
            ->references('id')
            ->on('users');
    });
}