[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Albert Reis da Cruz
Criador Albert Reis da Cruz 25/03/2022

Carlos,

boa tarde amigo.

criei uma migration para add uma coluna, numa tabela, no entanto ou rodar um reset ou refresh ou fresh, ocorreu um erro no down()

 

 

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AlterTableUserAddRoleIdToUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->foreignId('role_id')->after('id')->constrained('roles')->onDelete('cascade');
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('role_id');
});
}
}

 

onde está esse erro amigo?

Manager Carlos Ferreira 25/03/2022

Olá, Albert!
Tudo bem?

Não precisa deletar a coluna no método down, porque quando chegar neste arquivo de migration essa tabela (com a coluna) já nem vai existir mais, porque lá no migration de users já deletou a tabela com as colunas.

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

Blz, está criando as migrations, só que quando preciso dar um refresh ou reset ou fresh, ocorreu um erro ao deletar a tabela.

 

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Tem os arquivos no GitHub? Eu dou uma olhada na estrutura e te ajudo a identificar onde está o erro;

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

tem sim, 

https://github.com/zurctrebla/new-ttech

obrigado amigo

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Deleta essa linha:
https://github.com/zurctrebla/new-ttech/blob/master/database/migrations/2022_03_25_164936_alter_table_user_add_role_id_to_user_table.php#L29

Roda o comando:
php artisa migrate:fresh

Depois este:
php artisa migrate:refresh

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

Essa coluna será usada para vincular o user ao role!

 

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Sim, matenha ela no método up, como está, e remova do método down, porque como eu disse acima, ao deletar a tabela users, essa coluna automaticamente já existe mais! :-)

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

Após retirar o método down ocorreu um erro

dando erro ao rodar: php artisa migrate:refresh

SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails (SQL: drop table if exists `roles`)

 

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Primeiro: php artisan migrate:fresh

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

sim, segui a ordem que vc colocou, não resolveu ainda.

retirei o método down, 

1 - php artisan migrate:fresh

2 - php artisan migrate:refresh (aqui deu erro)

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Rodei o seu projeto aqui para simular o erro.

Primeiro, comentando a linha que eu te disse, resolveu o erro:
https://github.com/zurctrebla/new-ttech/blob/master/database/migrations/2022_03_25_164936_alter_table_user_add_role_id_to_user_table.php#L29

Segundo, tinha um novo erro, desta vez no arquivo de migration 2022_03_25_164903_create_roles_table

O problema é porque está tentando deletar essa tabela, antes de deletar o relacionamento que existe em outras, ex: CreatePermissionsTable

Você está trabalhando com Constraints, pode deletar a FK no método down: https://laravel.com/docs/9.x/migrations#dropping-foreign-keys

Carlos Ferreira
Criador Albert Reis da Cruz 25/03/2022

Então foi isso: 2 erros!, eu não percebi. Vou testar e confirmo, mas creio ter resolvido. 

Obrigado

Deixa só eu fazer uma pequena observação:

Não sei exatamente quanto tempo tenho de estudo com Laravel, nem quanto tempo tenho que adquirir o academy e o especializaTI. Mas quero deixar um depoimento.

No início achei que não ia conseguir, estava com muita dificuldade no aprendizado, mas esses dois suportes fizeram uma diferença muito grande.

Comecei um projeto recentemente e foi então que percebi o quanto cresci profissionalmente. 

Sou muito grato por toda a ajuda, sem isso nada seria possível.

Obrigado Grande Carlos Ferreira.

Muito grato por tudo.

 

Albert Reis da Cruz
Manager Carlos Ferreira 25/03/2022

Fico feliz demais em ler isso, e reforço que sempre pode contar comigo. TMJ!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!