一般错误:1005 无法创建表

Posted

技术标签:

【中文标题】一般错误:1005 无法创建表【英文标题】:General error: 1005 Can't create table 【发布时间】:2016-07-26 00:21:31 【问题描述】:

当我运行 php artisan migrate 时,我不断收到此错误:

[照亮\数据库\查询异常] SQLSTATE[HY000]:binomi.#sql-3910_c0b (errno: 150 "外键约束格式不正确") (SQL:alter table users 添加约束users_activity_foreignforeign 删除级联时的键 (activity) 引用 activity (id) [PDO异常] SQLSTATE[HY000]:binomi.#sql-3910_c0b (errno: 150 "外键约束格式不正确")

这是我的用户和活动模型的架构,它们是应用中唯一的模型。

用户迁移:

Schema::create('users', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->integer('activity');
        $table->rememberToken();
        $table->timestamps();
    );

  Schema::table('users', function($table)
      $table->foreign('activity')->references('id')->on('activity')->onDelete('cascade');
     

活动迁移:

 Schema::create('activty', function (Blueprint $table) 
        $table->increments('id');
        $table->string('label');
    );

【问题讨论】:

注意到“;;”在你的外键行的末尾? 只是输入错误@Duikboot 【参考方案1】:

increments() 自动分配为无符号。

所以,请确保您在下面的代码中添加无符号:

$table->integer('activity')->unsigned(); 

还要检查你是否打错字

【讨论】:

【参考方案2】:

unsigned() 修饰符添加到您的外键列:

Schema::create('users', function (Blueprint $table) 
        ...
        $table->integer('activity')->unsigned();
        $table->rememberToken();
        $table->timestamps();
    );

【讨论】:

【参考方案3】:

您的活动表有拼写错误,它在您的架构创建中显示activty。另外,我建议将其重命名为 activities,除非您只有一个。

【讨论】:

我改名了,什么都没发生 你也回滚了吗?

以上是关于一般错误:1005 无法创建表的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8:一般错误:1005 无法创建表

如何解决 laravel 迁移错误“一般错误:1005 无法创建表”

一般错误:1005 无法创建表 errno:150“外键约束格式不正确”)

“一般错误:1005 无法创建表”使用 Laravel 架构构建和外键

SQLSTATE[HY000]:一般错误:1005 无法创建表 Laravel 8

SQLSTATE [HY000]:一般错误:1005 无法创建表`Data`.`company eligibilities`(errno:150“外键约束形成错误”)