Tenho as colunas mencionadas abaixo:
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');
});
}
Eu fiz semeadora para mesa
Agora eu quero renomear id
para id_stnk
.
Eu adicionei uma "doutrina / dbal" no "compositor" e faço a composer update
.
Eu fiz a migração php artisan migration:make rename_column
.
Então, adicionei um novo método para rename_column:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
E então eu tentei executar o comando, php artisan migrate
mas obtive o erro mencionado abaixo:
[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
nastnk
tabela.make:migration
e nãomigrate:make
"doctrine/dbal": "~2.3"
Sem isso, você obterá alguns erros muito obscuros. Foi levantado como um bug aqui github.com/laravel/framework/issues/3116 e com uma menção indiscutivelmente menos útil na documentação aqui laravel.com/docs/5.0/schema#renaming-columnsa primeira coisa que você deseja fazer é criar seu arquivo de migração.
Digite sua linha de comando
php artisan make:migration rename_stk_column --table="YOUR TABLE" --create
Depois de criar o arquivo. Abra o novo arquivo de migração criado na pasta do seu aplicativo em banco de dados / migrações.
Em seu método up, insira o seguinte:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id', 'id_stnk'); }); }
e em seu método de descida:
Schema::table('stnk', function(Blueprint $table) { $table->renameColumn('id_stnk', 'id); }); }
então em sua linha de comando basta digitar
Então wollah! você acabou de renomear id para id_stnk. BTW, você pode usar
php artisan migrate:rollback
para desfazer as alterações. Boa sorte
fonte
Siga estas etapas, respectivamente, para renomear o arquivo de migração de coluna.
1- Existe uma biblioteca Doctrine / dbal em seu projeto. Se você não executou o comando primeiro
composer require doctrine/dbal
2- criar arquivo de migração de atualização para arquivo de migração de atualização antigo. Aviso (precisa ter o mesmo nome)
php artisan make:migration update_oldFileName_table
por exemplo, meu antigo nome de arquivo de migração: create_users_table nome de arquivo de atualização deve: update_users_table
3- update_oldNameFile_table.php
Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
'de' meu antigo nome de coluna e 'para' meu novo nome de coluna
4- Finalmente execute o comando migrate
Link da fonte: documento laravel
fonte
Renomeando Colunas (Laravel 5.x)
Para renomear uma coluna, você pode usar o método renameColumn no construtor Schema. * Antes de renomear uma coluna, certifique-se de adicionar a doutrina / dbal dependência ao seu arquivo composer.json. *
Ou você pode simplesmente solicitar o pacote usando o composer ...
composer require doctrine/dbal
Fonte: https://laravel.com/docs/5.0/schema#renaming-columns
Nota: Use make: migration e not migrate: make para Laravel 5.x
fonte
Jogar meus $ 0,02 aqui, já que nenhuma das respostas funcionou, mas me colocou no caminho certo. O que aconteceu foi que uma restrição externa anterior estava gerando o erro. Óbvio quando você pensa sobre isso.
Portanto, no
up
método de sua nova migração , primeiro elimine a restrição original, renomeie a coluna e adicione a restrição novamente com o novo nome da coluna. Nodown
método, você faz exatamente o oposto para que ele volte à configuração vendida./** * 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'); }); }
Espero que isso economize alguém no futuro!
fonte
A resposta acima é ótima ou, se não for prejudicá-lo, apenas reverta a migração, altere o nome e execute a migração novamente.
php artisan migrate:rollback
fonte