簡體   English   中英

SQLSTATE[HY000]: General error: 1005 Can't create table `business`.`users` (errno: 150 "Foreign key constraint is incorrectly formed") Laravel 7

[英]SQLSTATE[HY000]: General error: 1005 Can't create table `business`.`users` (errno: 150 "Foreign key constraint is incorrectly formed") Laravel 7

我需要在用戶(從 laravel 7 auth 腳手架創建)和類別之間創建一對多關系。 但是當我運行遷移時,我得到這個錯誤:遷移:2014_10_12_000000_create_users_table

照亮\數據庫\查詢異常

SQLSTATE[HY000]: General error: 1005 Can't create table business users (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table users add constraint users_category_id_foreign外鍵 ( category_id ) references catgories ( id ) on delete cascade)

這是用戶模式:

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();
    });

我做了一些搜索,我發現這種錯誤有兩個原因,第一個是類別表遷移應該在用戶表之前完成,第二個是用戶模式上的類別 id 數據類型和類別中的一個 id 必須相同,我驗證了這兩個條件,但我仍然遇到相同的錯誤。 如果有人能告訴我出了什么問題,我將不勝感激!

更改on('categories')而不是on('catgories')你寫了catgories 但它必須是categories

$table->foreign('category_id')->references('id')->on('categories')
        ->onDelete('cascade');

當外鍵的類型與主鍵的類型不匹配時,就會發生這種情況。

確保category_id的類型和長度與類別表類別的主鍵完全相同。 因此,如果您聲明為無符號大 integer,請確保categories.id為無符號大 integer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM