当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.3-外键约束格式不正确

臧欣怿
2023-03-14

使用Laravel 5.3和雄辩模型,试图制作一个用户角色模型。我有2个表用户和角色的主要模式,每个用户都有一个角色,每个角色都有很多用户(一对多的关系)。

当我试图在用户表中创建一个引用角色表中id的外键时,它会给我这个错误

在Connection.php647行:

SQLSTATE[HY000]:一般错误:1005无法创建表mydata。#sql-7e0_71(错误号:150“外键约束格式不正确”)(sql:alter table“user”add constraint“user_role_id_EXTERIVE”外键(“role_id”)引用角色(“id”))

在Connection.php449行:

SQLSTATE[HY000]:一般错误:1005无法创建表mydata。#sql-7e0_71(错误号:150“外键约束格式不正确”)

注意:我正在使用artisan命令迁移,我已经尝试了以下答案1,2

这是我的up()函数,用于我的用户迁移

public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->integer('role_id')->unsigned();
            $table->string('remember_token')->nullable();
            $table->timestamps();

            $table->foreign('role_id')->references('id')->on('role');
        });
    }

和角色表

public function up()
{
    Schema::create('role', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('description');
        $table->timestamps();
    });
}

共有1个答案

益绯辞
2023-03-14

您正在尝试添加一个外键,该外键在角色表(-

将角色表的名称更改为角色,或者您对角色表的引用。

 类似资料:
  • 我正在尝试迁移我的Rails MySQL数据库,但遇到以下错误: ActiveRecord::StatementInvalid:mysql2::错误:无法创建表。(错误号:150“外键约束格式不正确”):创建表(int AUTO_INCREMENT主键,varchar(255),int,int,datetime不为空, 以下是我的迁移: 如果有人能在这里给我一个主意,我将非常感谢。我已经搜索了一段

  • 运行迁移命令时出现错误。 这是管理表模式 另一个是laravel安装附带的用户表。 我想为user_id创建一个外键,但它会出错

  • 迁移我的数据库时,会出现此错误。下面是我的代码,后面是我在尝试运行迁移时遇到的错误。 密码 错误消息 [Illumb\Database\QueryException] SQLSTATE[HY000]:一般错误:1005无法创建表(errno:150“外键约束格式不正确”)(sql:alter 表添加约束MEINS\u category\u id\u外键()参考()关于删除级联)

  • 我刚刚更新了使用XAMPP的本地开发环境,新版本的XAMPP使用了MariaDB,而我之前使用的旧版本使用的是MySQL,我很满意。 现在,我认为MariaDB应该与MySQL完全兼容,因为它本质上只是一个“临时”替代品,但在升级之前,我很难导入直接从MySQL导出的数据库。 我得到以下错误: 这里是: 是不是因为文件中的被创建得更靠下,它会因为认为该表不存在而出错?但是,在这么说的同时,我以前从

  • 问题内容: 我有两个表,是一列父表,并与一列(而不是实际的名称),当我把一个FK上,以在我得到的错误。如果要删除记录,我想删除表2记录。谢谢你的帮助 让我知道是否需要其他信息。我是mysql新手 问题答案: 我在HeidiSQL中遇到了同样的问题。您收到的错误非常神秘。我的问题最终是外键列和引用列的类型或长度不同。 外键列为,引用列为。一旦将它们设置为完全相同的类型,外键创建就可以完美地工作了。

  • 我有一个帖子表和一个到达表,它引用了flight no(文本字符串格式)作为外键。然而,当我运行Laravel迁移时,我得到了可怕的错误: SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 150"外键约束格式不正确")(SQL:改变表添加约束外键()引用() [PDOExc0019]SQLSTATE[HY000]:常规错误: 1005不能创建表.(errno: 15