Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQLSTATE[HY000]:一般错误:1005 Can';t创建表'business'。'users'(errno:150“外键约束格式不正确”)Laravel 7_Php_Mysql_Laravel_One To Many - Fatal编程技术网

Php SQLSTATE[HY000]:一般错误:1005 Can';t创建表'business'。'users'(errno:150“外键约束格式不正确”)Laravel 7

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('

我需要在用户(从Laravel7AuthScaffolding创建)和类别之间创建一对多关系。 但当我运行迁移时,会出现以下错误: 迁移:2014\u 10\u 12\u000000\u创建\u用户\u表

照亮\数据库\查询异常

SQLSTATE[HY000]:一般错误:1005无法创建表
业务
用户
(错误号: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')上有一个错误类型
非常有用的信息,特别是在我的项目案例中,谢谢!这张桌子很漂亮,谢谢你!我很高兴这有帮助。