Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

php artisan make:migration não cria a migration no banco de dados

Boa tarde, estou com dificuldades na criação de migrations. Quando executo o comando : php artisan make:migration adiciona_relacionamento_produto_categoria, o arquivo php é criado, mas a migration não é criada no meu banco de dados. Estou usando o xampp com MariaDB. Alguém pode me ajudar?

8 respostas

Oi Liliane, tudo bem?

O artisan make:migration só cria o arquivo da migration mesmo! A migration será criada no banco no momento em que você rodar o segundo comando, que é o php artisan migrate.

Você chegou a rodar esse segundo? Se sim, deu algum erro?

Oi Rodrigo, tudo bem e vc?

Eu executei o php artisan migrate sim. Mas ele tenta executar a última migration que está no banco, apesar de existir o arquivo de migration na pasta database/migration, e então dá erro porque ele tenta fazer de novo o que já foi feito. Mesmo existindo mais de uma migration com data mais recente do que a última que tá no banco de dados, ele executa só a que está lá. Por isto é que eu pensei que a migration era salva no banco com o comando make:migration.

humm, entendi!

E qual mensagem aparece quando você tenta rodar o php artisan migrate?

E você pode nos mostrar como está o seu migrator mais recente?

Quando eu executo php artisan migrate, aparece a seguinte mensagem: [Illuminate\Database\QueryException] SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'tamanho' (SQL: alter table produtos add tamanho varchar(100) not null)

Seguem duas migrations que foram criadas depois e que eu não consigo executar:

<?php

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

class CreateCategoriasTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('categorias', function(Blueprint $table)
        {
            $table->increments('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('categorias');
    }

}



<?php

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

class AdicionaRelacionamentoProdutoCategoria extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('produtos', function($table){
            $table->integer('categoria_id')->default(1);
        });
    }

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

}

Oi Liliane

Quando você installar o artisan migrate, o Laravel cria uma tabela "migrations" no seu banco de dados. É lá que ele faz esse controle.

Você consegue acessar seu banco de dados, fazer um select nessa tabela e nos mandar a saida?

Tudo indica que sua migration já foi executada, e por isso já existe a coluna.

2014_10_12_000000_create_users_table 1 2014_10_12_100000_create_password_resets_table 1 2016_08_09_133411_adiciona_tamanho_no_produto 2

São estas migrations que estão lá. É como você falou mesmo, a migration que adiciona a coluna tamanho já foi executada, por isto dá o erro citado acima. Mas, o meu problema é que eu não consigo executar mais nenhuma migration. As duas que eu relacionei acima (CreateCategoriasTable e AdicionaRelacionamentoProdutoCategoria) foram criadas depois e eu não consigo executá-las.

solução!

E a coluna que você adicionou nessa ultima migration já está preenchida?

Se não, você pode experimentar rodar um php artisan migrate:rollback pra desfazer o ultimo batch de migrations, e depois rodar o migrate novamente. Mas isso implica perder os dados que você colocou na coluna que foi criada.

De toda forma, eu recomendo bastante que você faça um backup do banco antes de rodar esses testes (;

Deu certo, Rodrigo. Executei o rollback e consegui executar todas as outras migrations. Muito obrigada.