I have columns as mentioned bellow:
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');
});
}
I have made seeder to stnk table
Now I want to rename id
to id_stnk
.
I've added a "doctrine / dbal" in the "composer" and do a composer update
.
I've made migration php artisan migration:make rename_column
.
Then I've added new method to rename_column:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
And then I've tried to run command php artisan migrate
but I got error as mentioned bellow:
[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)
Follow these steps, respectively for rename column migration file.
1- Is there Doctrine/dbal library in your project. If you don't have run the command first
2- create update migration file for update old migration file. Warning (need to have the same name)
for example my old migration file name: create_users_table update file name should : update_users_table
3- update_oldNameFile_table.php
'from' my old column name and 'to' my new column name
4- Finally run the migrate command
Source link: laravel document
first thing you want to do is to create your migration file.
Type in your command line
After creating the file. Open the new created migration file in your app folder under database/migrations.
In your up method insert this:
and in your down method:
then in your command line just type
Then wollah! you have just renamed id to id_stnk. BTW you can use
to undo the changes. Goodluck
The above answer is great or if it will not hurt you, just rollback the migration and change the name and run migration again.
Renaming Columns (Laravel 5.x)
To rename a column, you may use the renameColumn method on the Schema builder. *Before renaming a column, be sure to add the doctrine/dbal dependency to your composer.json file.*
Or you can simply required the package using composer...
Source: https://laravel.com/docs/5.0/schema#renaming-columns
Note: Use make:migration and not migrate:make for Laravel 5.x
You need to create another migration file - and place it in there:
Run
Then inside the new migration file place:
Throwing my $0.02 in here since none of the answers worked, but did send me on the right path. What happened was that a previous foreign constraint was throwing the error. Obvious when you think about it.
So in your new migration's
up
method, first drop that original constraint, rename the column, then add the constraint again with the new column name. In thedown
method, you do the exact opposite so that it's back to the sold setting.Hope this saves someone some time in the future!