MySQL错误“外键约束形成错误”

时间:2015-12-14 08:48:37

标签: php mysql sql laravel

我无法解决这个问题,我有这个创建声明:

create table `roles` 
(
    `name` varchar(255) not null,
    `description` varchar(255) not null, 
    `created_at` timestamp default 0 not null, 
    `updated_at` timestamp default 0 not null
) default character set utf8 collate utf8_unicode_ci;

但我收到错误:

Foreign key constraint is incorrectly formed

有人能说出我在这里做错了吗?

仅供参考,我使用的是MySQL。

使用Laravel迁移运行实际语句,这会产生错误:

public function up()
{
    Schema::create('roles', function(Blueprint $table)
    {
        $table->string('name')->unique()->primary();
        $table->string('description');
        $table->timestamps();
    });
}

1 个答案:

答案 0 :(得分:2)

我快速浏览了一下这个问题,该问题很好地解释了为什么会出现这种错误:mysql Foreign key constraint is incorrectly formed error

这对你意味着什么?这意味着您的某个外键字段希望使用您的角色表中的主键填充,但两者之间的类型不同。我想在另一个表中你有一个像role_id这样的列,它是int,bigint,tinyint等。无论哪种方式,你都不应该使用字符串作为主键。