繁体   English   中英

Laravel 5.1中的mysql外键错误

[英]mysql foreign key error in Laravel 5.1

我创建了两个迁移:

迁移1

    Schema::create('responders', function (Blueprint $table) {
        $table->increments('id');
        $table->string('user_id');
        $table->double('latitude', 10, 6);
        $table->double('longitude', 10, 6);
        $table->timestamps();
    });

迁移2

    Schema::create('devices', function (Blueprint $table) {
        $table->increments('id');
        $table->string('user_id');
        $table->string('device_id');
        $table->string('device_token');
        $table->timestamps();

        $table->foreign('user_id')
            ->references('user_id')
            ->on('responders')
            ->onDelete('cascade');

    });

当我开始迁移时,将抛出错误消息:

[照亮\\数据库\\ QueryException]
SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table devices add constraint devices_user_id_foreign外键( user_id )引用respondersuser_id )删除级联)
[PDOException]
SQLSTATE [HY000]:常规错误:1215无法添加外键约束

我特别注意数据类型是一样的。 在这种情况下,两者都是string类型。 为什么无法建立外键?

外键是引用另一个表的列(通常是主 )的一列(或多列)。 的目的是确保数据的引用完整性。 换句话说,只允许出现在数据库中的值。

responders表中的user_id不是一个key ,这就是它显示此错误的原因。

暂无
暂无

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

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