Php SQLSTATE[HY000]:一般错误:1005 Can';t创建表'business'。'users'(errno:150“外键约束格式不正确”)Laravel 7
我需要在用户(从Laravel7AuthScaffolding创建)和类别之间创建一对多关系。 但当我运行迁移时,会出现以下错误: 迁移:2014\u 10\u 12\u000000\u创建\u用户\u表 照亮\数据库\查询异常 SQLSTATE[HY000]:一般错误:1005无法创建表Php SQLSTATE[HY000]:一般错误:1005 Can';t创建表'business'。'users'(errno:150“外键约束格式不正确”)Laravel 7,php,mysql,laravel,one-to-many,Php,Mysql,Laravel,One To Many,我需要在用户(从Laravel7AuthScaffolding创建)和类别之间创建一对多关系。 但当我运行迁移时,会出现以下错误: 迁移:2014\u 10\u 12\u000000\u创建\u用户\u表 照亮\数据库\查询异常 SQLSTATE[HY000]:一般错误:1005无法创建表业务用户(错误号:150“外键约束格式不正确”)(SQL:alter table用户添加约束用户类别id\u外键外键(类别id)引用类别(id)删除时(级联) 以下是用户模式: Schema::create('
业务用户(错误号:150“外键约束格式不正确”)(SQL:alter table用户添加约束用户类别id\u外键外键(类别id
)引用类别(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();
});
我做了一些搜索,发现出现这种错误的原因有两个,第一个是categories表迁移应该在users表1之前完成,第二个是users架构上的category id数据类型和category上的id数据类型必须相同,我验证了这两种情况,但仍然得到相同的错误。
如果有人能告诉我出了什么事,我将不胜感激 更改('categories')
上的而不是('catgories')
您编写的catgories
。但必须是类别
$table->foreign('category_id')->references('id')->on('categories')
->onDelete('cascade');
当外键的类型与主键的类型不匹配时,就会发生这种情况
确保category\u id
的类型和长度与category表categories的主键完全相同。因此,如果您声明为无符号大整数,请确保categories.id
是无符号大整数。您是如何首先进行类别迁移的?您可以为类别添加迁移名称吗?我通过以下命令进行迁移:php artisan migrate--path=/database/migrations/2020\u 08\u 22\u 121822\u create\u categories\u table.php,然后,我通过以下命令进行用户迁移:php artisan migrate--path=/database/migrations/2014\u 10\u 12\u 000000\u create\u users\u table.phpy您不必手动操作,laravel使用日期作为顺序进行迁移(实际上只是名称,但它以日期开头),只需将用户迁移更改为2020\u 08\u 22\u 121823\u create\u users\u table.php
,它将按照正确的顺序进行迁移。@Sobir指出,您在('catgories')上有一个错误类型,
非常有用的信息,特别是在我的项目案例中,谢谢!这张桌子很漂亮,谢谢你!我很高兴这有帮助。