【问题标题】:Laravel 6 - MariaDB 10.1: Illuminate\Database\QueryException : SQLSTATE[HY000] migration errorLaravel 6 - MariaDB 10.1:Illuminate\Database\QueryException:SQLSTATE[HY000] 迁移错误
【发布时间】:2020-03-23 09:36:30
【问题描述】:

我有自定义迁移:

代码:

// Groups migration
Schema::create('groups', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->boolean('status')->default(false);
    $table->timestamps();
});

// Clients migration
Schema::create('clients', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('fullname');
    $table->integer('phone');
    $table->date('birthday')->nullable();
    $table->boolean('can_get_congratulations')->default(false);
    $table->unsignedInteger('group_id')->default(null);
    $table->foreign('group_id')
          ->references('id')
          ->on('groups')
          ->onDelete('cascade');
    $table->boolean('status')->default(true);
    $table->timestamps();
});

当我运行此迁移文件时,会收到错误消息:

Illuminate\Database\QueryException : SQLSTATE[HY000]: 一般错误: 1005 无法创建表taxisms.#sql-1cc0_65c (errno: 150 "Foreign 键约束格式不正确”)(SQL:alter table clients add 约束clients_group_id_foreign外键(group_id) 删除级联时引用groups (id)

我的迁移代码哪里出错了?

【问题讨论】:

  • 这是cascade,不是casecade
  • @aynber 我更改为cascade,但也出现错误。查看更新的问题
  • 您能否也展示一下您的groups 迁移?
  • @aynber 查看更新的问题
  • 如果我没记错的话,列定义需要两边都匹配。由于groups.id 是一个无符号大整数,所以group_id 也需要如此。将$table->unsignedInteger('group_id') 更改为$table->unsignedBigInteger('group_id')

标签: php mysql laravel mariadb


【解决方案1】:

列需要在两边匹配。由于groups.id 是一个无符号大整数,因此 group_id 也需要如此。改变

$table->unsignedInteger('group_id') 

$table->unsignedBigInteger('group_id')

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2018-11-12
    • 2021-12-04
    • 2019-11-17
    • 2020-04-14
    • 2019-03-14
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多