繁体   English   中英

Laravel - 无法添加外键约束

[英]Laravel - Cannot add foreign key constraint

我正在尝试将 FK 'module_id' 添加到我的表 'documents' 中。 我已经运行了以下查询:

 public function up()
    {
        Schema::table('documents', function (Blueprint $table) {

            $table->integer('module_id')->unsigned();
            $table->foreign('module_id')->references('id')->on('modules');

        });
    }

正在返回以下错误:

SQLSTATE[HY000]:一般错误:1215 无法添加外键约束(SQL:alter table documents添加约束documents_module_id_foreign module_id外键( module_id )引用modulesid ))

我不确定我做错了什么,我确定这可能是一个愚蠢的错误,但我花了很多时间在圈子里试图弄清楚......这是我尝试过的......

  • 两个表都已经创建
  • 两列的数据类型一致(均为 unsignedBigInts,20)

我已经包含了我的数据库表的图片,我感谢任何帮助。 在此处输入图片说明 在此处输入图片说明

更新:

SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败( laravel#sql-2cd_23 ,CONSTRAINT documents_module_id_foreign #sql-2cd_23 FOREIGN KEY( module_id )REFERENCES modulesid ))(SQL:更改表documents添加约束documents_module_id_foreign module_id外键( module_id )引用modulesid ))

列的类型需要是一个大整数。

    Schema::table('documents', function (Blueprint $table) {
        $table->unsignedBigInteger('module_id');
        $table->foreign('module_id')->references('id')->on('modules');

    });

更新

您可能已经在表中获得了数据,因为该列不能为空,因此外键不能存在。 将其作为可为空开始,然后添加关系并删除可为空的将修复它。 所以:

$table->unsignedBigInteger('module_id')->nullable();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM