代码之家  ›  专栏  ›  技术社区  ›  Onyx

尝试使用Laravel迁移添加外键约束时出错

  •  0
  • Onyx  · 技术社区  · 6 年前

    我试图找出外键,但在添加后尝试迁移时: $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 对于我的代码,我得到以下错误:

    "SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL
      : alter table `images` add constraint `images_user_id_foreign` foreign key
      (`user_id`) references `users` (`id`) on delete cascade)
    "
    

    用户迁移:

    Schema::create('users', function (Blueprint $table) {
                    $table->increments('id');
                    $table->string('first_name');
                    $table->string('last_name');
                    $table->string('username');
                    $table->string('password');
                    $table->string('email');
                    $table->string('profile_picture')->nullable()->default('image');
                    $table->timestamps();
                    $table->rememberToken();
                    $table->engine = 'InnoDB';
                });
    

    图像迁移:

    Schema::create('images', function (Blueprint $table) {
                $table->increments('id');
                $table->string('name');
                $table->string('description')->nullable()->default(null);
                $table->integer('user_id');
                $table->foreign('user_id')
                      ->references('id')
                      ->on('users')
                      ->onDelete('cascade');
                $table->string('file_name');
                $table->string('upvotes')->default(0);
                $table->string('downvotes')->default(0);
                $table->string('views')->default(0);
                $table->timestamps();
                $table->engine = 'InnoDB';
            });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   BILAL MALIK    6 年前

    这可能是因为您使用的数据类型不同,请尝试将数据类型设置为相同的数据类型,这样应该可以正常工作。 Int-bigInt或string Int,请检查。

    也可以分两步添加, 也可以不签名。

    否则一定是打字错误。