【发布时间】:2020-12-19 15:32:35
【问题描述】:
我需要在用户(从 laravel 7 auth 脚手架创建)和类别之间创建一对多的关系。 但是当我运行迁移时,我得到了这个错误: 迁移:2014_10_12_000000_create_users_table
照亮\数据库\查询异常
SQLSTATE[HY000]: 一般错误: 1005 Can't create table business.users (errno: 150 "外键约束格式不正确") (SQL: alter table users add constraint users_category_id_foreign外键(category_id)在删除级联时引用catgories(id)
这是用户架构:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('category_id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->foreign('category_id')->references('id')->on('catgories')
->onDelete('cascade');
});
这是类别中的一个:
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('category');
$table->timestamps();
});
我查了一下,发现出现这样的错误有两个原因,第一个是classes表迁移应该在users表之前进行,第二个是category id datatype在用户架构和类别上的 id 之一必须相同,我验证了这两个条件,但仍然遇到相同的错误。 如果有人能告诉我出了什么问题,我将不胜感激!
【问题讨论】:
-
您是如何让类别迁移先行的?您可以为类别添加迁移名称吗?
-
我通过以下命令进行了迁移: php artisan migrate --path=/database/migrations/2020_08_22_121822_create_categories_table.php 然后,我通过以下命令进行了用户迁移: php artisan migrate --path=/database /migrations/2014_10_12_000000_create_users_table.php
-
您不必手动进行,laravel 迁移使用日期作为顺序(实际上只是名称,但它以日期开头)只需将用户迁移更改为
2020_08_22_121823_create_users_table.php它将迁移正确的顺序 -
也正如@Sobir 指出的那样,您输入错误
on('catgories') -
非常有用的信息,尤其是我的项目案例,谢谢!
标签: php mysql laravel one-to-many