美文网首页
mysql执行带外键的sql文件时出现mysql ERROR 1

mysql执行带外键的sql文件时出现mysql ERROR 1

作者: LeeShun | 来源:发表于2019-10-23 20:49 被阅读0次

    ERROR 1215 (HY000): Cannot add foreign key constraint

    在用laravel建表时遇到了这个错误,然后找了下找到了解决办法,记录下:

    是要建两张表:

    Schema::create('users', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->string('name');
                $table->string('email')->unique();
                $table->timestamp('email_verified_at')->nullable();
                $table->string('password');
                $table->rememberToken();
                $table->timestamps();
            });
    
    Schema::create('articles', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->unsignedTinyInteger('status');
                $table->string('title');
                $table->string('preview');
                $table->longText('content');
                $table->unsignedInteger('author_id')->nullable();
                $table->timestamps();
                $table->softDeletes();
                $table->foreign('author_id')->references('id')->on('users')->onDelete('set null');
                $table->engine = 'InnoDB';
                $table->charset = 'utf8mb4';
                $table->collation = 'utf8mb4_unicode_ci';
            });
    

    出现如下提示:


    微信截图_20191023204228.png

    检查了数据库结构,如图


    微信图片_20191023204630.png 微信图片_20191023204636.png

    发现错误是users表主键使用了bigint 因为你要添加外键时,你的外键类型就是bigint,而引用的主键类型也必须是 bigint,如果你的主键设置auto_increment(那么你的字段类型实际上是unsigned_bigint)

    得出结论:主键,外键类型不一致,所以无法添加外键。

    相关文章

      网友评论

          本文标题:mysql执行带外键的sql文件时出现mysql ERROR 1

          本文链接:https://www.haomeiwen.com/subject/mxhlvctx.html