Penghijrahan Laravel untuk menambah atribut nullable pada lajur jadual sedia ada
P粉674757114
2023-09-05 12:58:02
<p>Saya telah mula menulis projek peribadi kecil di Laravel 10. Masalah yang saya hadapi adalah seperti berikut: </p>
<ol>
<li>Saya mempunyai jadual pengguna dengan UUID kunci asing - role_id. </li>
<li>Saya mahu menambah atribut nullable pada lajur ini tanpa memadamkan jadual. </li>
<li>Saya mencipta migrasi baharu untuk membuat perubahan. </li>
<li>Pakej doktrin/dbal dipasang untuk (secara teorinya) menukar lajur. </li>
<li>Kod saya dalam penghijrahan adalah seperti berikut:</li>
</ol>
<pre class="brush:php;toolbar:false;">public function up(): void
{
Skema::jadual('pengguna', fungsi (Blueprint $table) {
$table->foreignUuid('role_id')->nullable()->constrained('roles')->change();
});
}
/*** Balikkan penghijrahan.*/
fungsi awam down(): void
{
Skema::jadual('pengguna', fungsi (Blueprint $table) {
$table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change();
});
}</pre>
<p>Tetapi apabila saya menjalankan php artisan migrate, saya mendapat ralat berikut - SQLSTATE[42S21]: Lajur sudah wujud: 1060 Nama lajur pendua 'role_id' (Sambungan: mysql, SQL: alter table users add role_id char(36 ) null). </p>
<p>Sebarang cadangan tentang cara mengubah suai lajur dengan betul akan sangat dihargai. </p>
Anda boleh mencuba perkara berikut:
Atau anda boleh menggunakan pernyataan SQL asal: