eu quero
para reverter apenas:
Rolled back: 2015_05_15_195423_alter_table_web_directories
eu corro
php artisan migrate:rollback
, 3 da minha migração estão revertendo.
Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table
eu apago
Ambos os meus web_directories
e minha contacts
mesa sem querer. Eu nunca quero que isso aconteça, e se eu puder reverter apenas esse específico, esse desastre nunca acontecerá.
laravel
laravel-4
laravel-5
database-migration
cyber8200
fonte
fonte
Respostas:
Se você olhar na sua
migrations
tabela, verá que cada migração tem um número de lote. Portanto, quando você reverte, reverte cada migração que fazia parte do último lote.Se você deseja reverter apenas a última migração, apenas aumente o número do lote em um. Da próxima vez que você executar o
rollback
comando, ele reverterá apenas essa migração, pois está em um "lote" próprio.fonte
migrations
SETbatch
= 2 WHEREmigration
= 'name_of_the_migration';Laravel 5.3+
Retroceder um passo. Nativamente.
E aqui está a página do manual: docs .
Laravel 5.2 e anterior
Não há maneira de fazer sem algum aborrecimento. Para detalhes, consulte a resposta de Martin Bean .
fonte
Toda vez que você reverte, recebe o último lote de migração. use o comando
fonte
Se você não pode fazer o que é dito por @Martin Bean, pode tentar outro truque.
Crie uma nova migração e nesse arquivo no método up () insira o que está no método down () da migração que você deseja reverter e no método down () insira o que está no método up ().
por exemplo, se sua migração original for assim
em seguida, no novo arquivo de migração, faça isso
e, em seguida, execute a migração, ela excluirá a tabela. e se você quiser novamente, basta reverter.
fonte
melhor usar atualização migrar
migração de reversão usada de outra forma
para obter mais detalhes sobre migração, consulte
fonte
A melhor maneira é criar uma nova migração e fazer as alterações necessárias.
Solução alternativa para o pior caso ( se você tiver acesso ao banco de dados e estiver bem com uma redefinição dos dados dessa tabela ):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Isso forçará o laravel a executar essa migração específica, pois não existe nenhuma entrada no histórico de migração do Laravel
ATUALIZAÇÃO : O caminho do Laravel (Obrigado, @ thiago-valente)
Corre:
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
e depois:
php artisan migrate
Isso executará novamente essa migração específica
fonte
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
E finalmentephp artisan migrate
Pode ser um pouco tarde para responder a essa pergunta, mas aqui está uma maneira muito boa, limpa e eficiente de fazê-lo. Vou tentar ser o mais completo possível.
Antes de criar suas migrações, crie diretórios diferentes, como:
Em seguida, ao criar suas migrações, execute o seguinte comando (usando suas tabelas como exemplo):
ou
ou
Os comandos acima criarão o arquivo de migração dentro do caminho do diretório especificado. Em seguida, você pode simplesmente executar o seguinte comando para migrar seus arquivos através dos diretórios atribuídos.
* Nota: Você pode alterar lote_1 para lote_2 ou lote_3 ou qualquer outro nome de pasta em que esteja armazenando os arquivos de migração. Contanto que permaneça no diretório banco de dados / migrações ou em algum diretório especificado.
Em seguida, se você precisar reverter suas migrações específicas, poderá reverter por lote, como mostrado abaixo:
ou
ou
O uso dessas técnicas permitirá maior flexibilidade e controle sobre o (s) banco (s) de dados e quaisquer modificações feitas no seu esquema.
fonte
Retroceder um passo. Nativamente.
Retroceder duas etapas. Nativamente.
fonte
Use o comando "php artisan migrate: rollback --step = 1" para reverter a migração para 1 passo atrás.
Para mais informações, consulte o link: - https://laravel.com/docs/master/migrations#running-migrations
fonte
Se você deseja reverter a última migração.
Se você deseja reverter a migração específica, acesse a tabela de migração e defina o valor mais alto desse registro em lote. Então.
Atualmente, estou trabalhando no laravel 5.8, se não estiver trabalhando em nenhuma outra versão do laravel, por favor me informe.
fonte
Migrar tabelas uma por uma.
Altere o número do lote da migração que você deseja reverter para o mais alto.
Execute migrate: rollback.
Pode não ser a maneira mais confortável de lidar com projetos maiores.
fonte
Se você deseja modificar o arquivo de migração original e migrá-lo novamente, é possível usar este pacote para migrar. (Aplicável ao Laravel 5.4 ou posterior)
Primeiro, instale o pacote no seu projeto do Laravel:
Comando Register em
app/Console/Kernel.php
:Agora, execute este comando para migrar seu arquivo
fonte
php artisan:migrate --path=database/migrations/my_migration.php
. Antes de você, verifique se amigrations
tabela não possui uma entrada paramy_migration
.algo assim
fonte
1.) Dentro do banco de dados, vá para a tabela de migrações e exclua a entrada da migração relacionada à tabela que você deseja excluir.
Exemplo de imagem da tabela de migração
2.) Em seguida, exclua a tabela relacionada à migração que você acabou de excluir da instrução 1.
Excluir exemplo de imagem da tabela
3.) Finalmente, faça as alterações desejadas no arquivo de migração da tabela excluída da instrução no. 2, em seguida, execute
php artisan migrate
para migrar a tabela novamente.fonte
Conforme declarado no manual do Laravel , você pode reverter um número específico de migrações usando a
--step
opçãofonte
Outra alternativa às mencionadas, se você precisar fazer isso várias vezes com as mesmas migrações. Pessoalmente, acho que isso adiciona muita flexibilidade às suas migrações.
Adicione
database/migrations
ao seu objeto de carregamento automáticocomposer.json
como este:Em seguida, adicione
namespace Database\Migrations;
a todos os seus arquivos de migração.Em seguida, execute
$ composer dump-autoload
para atualizar seucomposer.lock
arquivo.Então, supondo que o nome da sua classe para a migração seja
AlterTableWebDirectories
, você pode criar um comando como este:E escreva esta lógica no seu
handle()
método:Isso fará exatamente o que você deseja. Se você quiser diminuir a contagem de migração em vez de excluí-la, provavelmente poderá descobrir como alterar o
DB:raw
comando.Esse comando pode ser estendido para permitir que você escolha dinamicamente qual migração você está eliminando, passando um argumento para o comando.
Então, quando você estiver lendo para migrar esse arquivo novamente, basta executar
php artisan migrate
e ele apenas migrará esse .Esse processo permite que você faça alterações específicas nas migrações sem precisar fazer uma atualização completa e propagar cada vez.
Pessoalmente, preciso fazer muito isso porque minhas sementes são bastante grandes.
fonte
fonte
Se você tiver acesso ao banco de dados, terá uma solução mais fácil. Você pode excluir o registro da tabela de migrações e simplesmente soltar a tabela. com cliente SQL.
E pode usar
Como muitas respostas. E lembre-se de que o caminho é Localização. Você pode remover até a migração de módulos como esta. (Qualquer migração de anywhare)
E lembre-se, se você estiver usando servidores Linux, tenha cuidado com a distinção entre maiúsculas e minúsculas. Você deve adicionar como / Banco de Dados / Migrações com capital inicial.
fonte