/ / Erreur MySQL "La contrainte de clé étrangère est mal formée" - php, mysql, sql, laravel

Erreur MySQL "La contrainte de clé étrangère n'est pas correctement formée" - php, mysql, sql, laravel

J'ai du mal à résoudre ceci, j'ai cette déclaration de création:

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;

Mais j'obtiens une erreur:

Foreign key constraint is incorrectly formed

Quelqu'un peut-il suggérer ce que je fais mal ici?

Pour votre information, j'utilise MySQL.

L'instruction réelle est exécutée à l'aide de la migration Laravel qui donne l'erreur:

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

Réponses:

2 pour la réponse № 1

J'ai jeté un coup d'œil autour de moi et suis tombé sur cette question SO qui explique bien pourquoi cette erreur peut se produire: mysql La contrainte de clé étrangère est une erreur mal formée

Qu'est-ce que cela signifie pour toi? Cela signifie que vous avez un champ de clé étrangère quelque part qui s'attend à être rempli avec la clé primaire de votre table de rôles, mais les types entre les deux diffèrent. J'imagine que quelque part dans un autre tableau, vous avez une colonne telle que role_id c'est-à-dire int, bigint, tinyint, etc. De toute façon, vous ne devriez pas utiliser de chaînes comme clés primaires.