为现有表列添加可为空属性的Laravel迁移
P粉674757114
2023-09-05 12:58:02
<p>我已经开始在Laravel 10上编写一个小的个人项目。我遇到的问题如下:</p>
<ol>
<li>我有一个用户表,其中有一个外键UUID - role_id。</li>
<li>我想在该列上添加nullable属性,而不需要删除表。</li>
<li>我创建了一个新的迁移来进行修改。</li>
<li>安装了doctrine/dbal包,以便(理论上)更改列。</li>
<li>我在迁移中的代码如下:</li>
</ol>
<pre class="brush:php;toolbar:false;">public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->foreignUuid('role_id')->nullable()->constrained('roles')->change();
});
}
/*** 反转迁移。*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change();
});
}</pre>
<p>但是当我运行php artisan migrate时,我得到了以下错误 - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'role_id' (Connection: mysql, SQL: alter table users add role_id char(36) null)。</p>
<p>非常感谢任何关于如何正确修改列的建议。</p>
您可以尝试以下操作:
或者可以使用原始的SQL语句: