Migration Laravel pour ajouter un attribut nullable à la colonne de table existante
P粉674757114
2023-09-05 12:58:02
<p>J'ai commencé à écrire un petit projet personnel sur Laravel 10. Le problème que j'ai rencontré est le suivant : </p>
<ol>
<li>J'ai une table utilisateur avec un UUID de clé étrangère - role_id. ≪/li>
<li>Je souhaite ajouter un attribut nullable sur cette colonne sans supprimer la table. ≪/li>
<li>J'ai créé une nouvelle migration pour apporter les modifications. ≪/li>
<li>Le package doctrine/dbal est installé afin de (théoriquement) changer de colonne. ≪/li>
<li>Mon code dans la migration est le suivant :</li>
</ol>
<pre class="brush:php;toolbar:false;">fonction publique up() : void
{
Schema::table('utilisateurs', fonction (Blueprint $table) {
$table->foreignUuid('role_id')->nullable()->constrained('roles')->change();
});
}
/*** Inverser les migrations.*/
fonction publique down() : vide
{
Schema::table('utilisateurs', fonction (Blueprint $table) {
$table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change();
});
}</pré>
<p>Mais lorsque j'exécute php artisan migrate, j'obtiens l'erreur suivante - SQLSTATE[42S21] : La colonne existe déjà : 1060 Nom de colonne en double 'role_id' (Connexion : mysql, SQL : les utilisateurs de la table alter ajoutent role_id char(36) nul). </p>
<p>Toute suggestion sur la façon de modifier correctement les colonnes serait grandement appréciée. </p>
Vous pouvez essayer ce qui suit :
Ou vous pouvez utiliser l'instruction SQL d'origine :