我正在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
我该如何解决?
答案 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');
});
}