Ich habe Spalten wie unten erwähnt:
public function up()
{
Schema::create('stnk', function(Blueprint $table)
{
$table->increments('id');
$table->string('no_reg', 50)->unique();
$table->string('no_bpkb', 50)->unique();
$table->string('nama_pemilik', 100);
$table->string('alamat');
$table->string('merk', 50);
$table->string('tipe', 50);
$table->string('jenis', 50);
$table->smallInteger('tahun_pembuatan');
$table->smallInteger('tahun_registrasi');
$table->smallInteger('isi_silinder');
$table->string('no_rangka', 50);
$table->string('no_mesin', 50);
$table->string('warna', 50);
$table->string('bahan_bakar', 50);
$table->string('warna_tnkb', 50);
$table->string('kode_lokasi', 50);
$table->date('berlaku_sampai');
$table->timestamps();
$table->index('created_at');
$table->index('updated_at');
});
}
Ich habe Sämaschine zum Tisch gemacht
Jetzt möchte ich umbenennen id
in id_stnk
.
Ich habe dem "Komponisten" eine "Doktrin / Dbal" hinzugefügt und mache eine .composer update
Ich habe Migration gemacht php artisan migration:make rename_column
.
Dann habe ich rename_column eine neue Methode hinzugefügt:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
Und dann habe ich versucht, den Befehl auszuführen, php artisan migrate
aber ich habe den folgenden Fehler erhalten:
[Ulluminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150) (SQL: ALTER TABLE stnk CHANGE id id_stnk INT UNSIGENED AUTO_INCREMENT NOT NULL)
[PDOException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150)
id
auf diestnk
Tabellen verweisen .make:migration
und nichtmigrate:make
"doctrine/dbal": "~2.3"
Sie einige sehr undurchsichtige Fehler. Es wurde als Fehler hier github.com/laravel/framework/issues/3116 und mit einer wohl weniger nützlichen Erwähnung in der Dokumentation hier laravel.com/docs/5.0/schema#renaming-columnsAls erstes möchten Sie Ihre Migrationsdatei erstellen.
Geben Sie Ihre Befehlszeile ein
php artisan make:migration rename_stk_column --table="YOUR TABLE" --create
Nach dem Erstellen der Datei. Öffnen Sie die neu erstellte Migrationsdatei in Ihrem App-Ordner unter Datenbank / Migrationen.
Fügen Sie in Ihre up-Methode Folgendes ein:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id', 'id_stnk'); }); }
und in Ihrer Down-Methode:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id_stnk', 'id); }); }
Geben Sie dann einfach in Ihre Befehlszeile ein
Dann wollah! Sie haben gerade id in id_stnk umbenannt. Übrigens können Sie verwenden
php artisan migrate:rollback
um die Änderungen rückgängig zu machen. Viel Glück
quelle
Befolgen Sie diese Schritte, um die Spaltenmigrationsdatei umzubenennen.
1- Gibt es in Ihrem Projekt eine Doctrine / Dbal-Bibliothek? Wenn Sie den Befehl nicht zuerst ausgeführt haben
composer require doctrine/dbal
2- Erstellen Sie eine Update-Migrationsdatei, um die alte Migrationsdatei zu aktualisieren. Warnung (muss den gleichen Namen haben)
php artisan make:migration update_oldFileName_table
Beispiel: Der Name meiner alten Migrationsdatei: create_users_table Der Name der Aktualisierungsdatei sollte lauten: update_users_table
3- update_oldNameFile_table.php
Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
'von' meinem alten Spaltennamen und 'zu' meinem neuen Spaltennamen
4- Führen Sie abschließend den Befehl migrate aus
Quelllink : Laravel-Dokument
quelle
Spalten umbenennen (Laravel 5.x)
Um eine Spalte umzubenennen, können Sie die Methode renameColumn im Schema-Generator verwenden. * Stellen Sie vor dem Umbenennen einer Spalte sicher, dass Sie die Datei doctrine / dbal zu Ihrer Datei composer.json hinzufügen . *
Oder Sie können das Paket einfach mit Composer anfordern ...
composer require doctrine/dbal
Quelle: https://laravel.com/docs/5.0/schema#renaming-columns
Hinweis: Verwenden Sie make: migration und nicht migrate: make für Laravel 5.x.
quelle
Ich habe meine $ 0,02 hier reingeworfen, da keine der Antworten funktioniert hat, aber mich auf den richtigen Weg geschickt hat. Was geschah, war, dass eine frühere ausländische Einschränkung den Fehler auslöste. Offensichtlich, wenn Sie darüber nachdenken.
Löschen Sie also in der
up
Methode Ihrer neuen Migration zuerst diese ursprüngliche Einschränkung, benennen Sie die Spalte um und fügen Sie die Einschränkung dann erneut mit dem neuen Spaltennamen hinzu. Bei derdown
Methode machen Sie genau das Gegenteil, damit die verkaufte Einstellung wiederhergestellt wird./** * Run the migrations. * * @return void */ public function up() { Schema::table('proxy4s', function (Blueprint $table) { // Drop it $table->dropForeign(['server_id']); // Rename $table->renameColumn('server_id', 'linux_server_id'); // Add it $table->foreign('linux_server_id')->references('id')->on('linux_servers'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('proxy4s', function (Blueprint $table) { // Drop it $table->dropForeign(['linux_server_id']); // Rename $table->renameColumn('linux_server_id', 'server_id'); // Add it $table->foreign('server_id')->references('id')->on('linux_servers'); }); }
Hoffe das spart jemandem etwas Zeit in der Zukunft!
quelle
Die obige Antwort ist großartig. Wenn Sie nicht verletzt werden, setzen Sie die Migration einfach zurück, ändern Sie den Namen und führen Sie die Migration erneut aus.
php artisan migrate:rollback
quelle