既存のテーブル列に null 許容属性を追加するための Laravel 移行
P粉674757114
2023-09-05 12:58:02
<p>Laravel 10 で小さな個人プロジェクトを書き始めました。私が遭遇した問題は次のとおりです: </p>
<ol>
<li>外部キー UUID (role_id) を持つユーザー テーブルがあります。 </li>
<li>テーブルを削除せずに、この列に null 許容属性を追加したいと考えています。 </li>
<li>変更を加えるために新しい移行を作成しました。 </li>
<li>doctrine/dbal パッケージは、(理論的には) 列を変更するためにインストールされます。 </li>
<li>移行時のコードは次のとおりです: </li>
</ol>
<pre class="brush:php;toolbar:false;">パブリック関数 up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->foreignUuid('role_id')->nullable()->constrained('roles')->change();
});
}
/*** 移行を逆にします。*/
パブリック関数 down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change();
});
}</pre>
<p>しかし、phpArtisan Migrate を実行すると、次のエラーが表示されます - SQLSTATE[42S21]: Column selected: 1060 Duplicate columns name 'role_id' (Connection: mysql, SQL: alter table users add role_id char(36 )ヌル)。 </p>
<p>列を正しく変更する方法についての提案をいただければ幸いです。 </p>
次のことを試すことができます:
リーリーまたは、元の SQL ステートメントを使用することもできます:
リーリー