я хочу
только для отката:
Rolled back: 2015_05_15_195423_alter_table_web_directories
я бегу
php artisan migrate:rollback
3 моих миграции откатились.
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
Я удаляю
и мой web_directories
и мой contacts
стол непреднамеренно. Я никогда не хочу, чтобы это произошло, и если я смогу откатить только эту конкретную, эта катастрофа никогда не произойдет.
laravel
laravel-4
laravel-5
database-migration
cyber8200
источник
источник
Ответы:
Если вы посмотрите в
migrations
таблицу, то увидите, что у каждой миграции есть номер партии. Поэтому, когда вы выполняете откат, он откатывает каждую миграцию, которая была частью последнего пакета.Если вы хотите откатить только последнюю миграцию, просто увеличьте номер партии на единицу. Затем в следующий раз, когда вы запустите
rollback
команду, она откатит только одну миграцию, так как она находится в отдельной «партии».источник
migrations
SETbatch
= 2 WHEREmigration
= 'name_of_the_migration';Laravel 5.3+
Откат на один шаг. Врожденная.
И вот страница справочника: документы .
Laravel 5.2 и раньше
Без хлопот не обойтись. Для деталей, проверьте ответ Мартина Бина .
источник
Каждый раз, когда вы выполняете откат, вы получаете последний пакет миграции. используйте команду
источник
Если вы не можете сделать то, что говорит @Martin Bean, тогда вы можете попробовать другой трюк.
Создайте новую миграцию и в этом файле в методе up () вставьте метод from (down) миграции, которую вы хотите откатить, а в метод down () вставьте метод up ().
например, если ваша первоначальная миграция такая
затем в новом файле миграции сделайте это
и затем запустите миграцию, он удалит таблицу. и если вы снова захотите это вернуть, просто откатитесь назад.
источник
лучше использовать обновление мигрировать
иначе используется откат мигрировать
подробнее о миграции см.
источник
Лучший способ - создать новую миграцию и внести в нее необходимые изменения.
В худшем случае ( если у вас есть доступ к БД и у вас все в порядке с СБРОСОМ данных этой таблицы ):
your-specific-migration
your-specific-migration
php artisan migrate --path=/database/migrations/your-specific-migration.php
Это заставит laravel выполнить эту конкретную миграцию, так как в истории миграции Laravel нет записи об этом
ОБНОВЛЕНИЕ : путь Laravel (Спасибо, @ thiago-valente)
Бегать:
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
а потом:
php artisan migrate
Это перезапустит эту конкретную миграцию
источник
php artisan migrate:rollback --path=/database/migrations/your-specific-migration.php
И наконецphp artisan migrate
Возможно, будет немного поздно ответить на этот вопрос, но я считаю, что это очень хороший, чистый и эффективный способ сделать это. Я постараюсь быть максимально тщательным.
Перед созданием миграций создайте разные каталоги, например:
Затем при создании миграций выполните следующую команду (на примере таблиц):
или
или
Приведенные выше команды сделают файл миграции внутри заданного пути к каталогу. Затем вы можете просто выполнить следующую команду, чтобы перенести файлы через назначенные им каталоги.
* Примечание: вы можете изменить batch_1 на batch_2 или batch_3 или любое другое имя папки, в которой вы храните файлы миграции. Пока оно остается в каталоге базы данных / миграций или некотором указанном каталоге.
Далее, если вам нужно откатить ваши конкретные миграции, вы можете откатить пакетно, как показано ниже:
или
или
Использование этих методов позволит вам более гибко управлять вашими базами данных и любыми изменениями, внесенными в вашу схему.
источник
Откат на один шаг. Врожденная.
Откат на два шага. Врожденная.
источник
Используйте команду "php artisan migrate: rollback --step = 1" для отката миграции на 1 шаг назад.
Для получения дополнительной информации проверьте ссылку: - https://laravel.com/docs/master/migrations#running-migrations
источник
Если вы хотите откат последней миграции.
Если вы хотите откатить конкретную миграцию, перейдите в таблицу миграции и установите максимальное значение этой записи в пакете. Затем.
В настоящее время я работаю над Laravel 5.8, если не работает любая другая версия Laravel, пожалуйста, сообщите мне.
источник
Перенос таблиц по очереди.
Измените номер партии миграции, для которой вы хотите выполнить откат, на самый высокий.
Запустите миграцию: откат.
Возможно, не самый удобный способ справиться с более крупными проектами.
источник
Если вы хотите изменить исходный файл миграции и перенести его снова, вы можете использовать этот пакет для миграции. (Применимо к Laravel 5.4 или более поздней версии )
Сначала установите пакет в свой проект Laravel:
Зарегистрировать команду по адресу
app/Console/Kernel.php
:Теперь запустите эту команду, чтобы перенести ваш файл
источник
php artisan:migrate --path=database/migrations/my_migration.php
. Непосредственно перед тем, как сделать это, убедитесь, что вmigrations
таблице нет записи дляmy_migration
.что-то вроде этого
источник
1.) Внутри базы данных перейдите к таблице миграции и удалите запись миграции, относящуюся к таблице, которую вы хотите удалить.
Пример изображения таблицы миграции
2.) Затем удалите таблицу, связанную с миграцией, которую вы только что удалили из инструкции 1.
Удалить пример изображения таблицы
3.) Наконец, внесите необходимые изменения в файл миграции таблицы, которую вы удалили из инструкции №. 2 затем запустите,
php artisan migrate
чтобы перенести таблицу снова.источник
Как указано в руководстве Laravel , вы можете откатить определенное количество миграций, используя
--step
опциюисточник
Еще одна альтернатива упомянутым, если вам нужно делать это несколько раз с одними и теми же миграциями. Лично я думаю, что это добавляет гибкости вашей миграции.
Добавьте
database/migrations
к вашему объекту автозагрузки в вашемcomposer.json
виде:Затем добавьте
namespace Database\Migrations;
все ваши файлы миграции.Затем запустите,
$ composer dump-autoload
чтобы обновитьcomposer.lock
файл.Затем, предполагая, что ваше имя класса для миграции
AlterTableWebDirectories
, вы можете создать команду, подобную этой:И напишите эту логику в вашем
handle()
методе:Это будет делать именно то, что вы хотите. Если вы хотите уменьшить счетчик миграции вместо того, чтобы удалить его, вы, вероятно, сможете выяснить, как изменить
DB:raw
команду.Эта команда может быть расширена, чтобы вы могли динамически выбирать, какую миграцию вы отбрасываете, передавая аргумент в команду.
Затем, когда вы читаете, чтобы перенести этот файл снова, вы можете просто запустить,
php artisan migrate
и он перенесет только этот.Этот процесс позволяет вносить конкретные изменения в миграции без необходимости каждый раз выполнять полное обновление и заполнение.
Лично мне нужно делать это много, потому что мои семена довольно большие.
источник
источник
Если у вас есть доступ к БД, у вас есть более простое решение. Вы можете удалить запись из таблицы миграции, а затем просто удалить ее. с клиентом SQL.
И может использовать
Как и многие ответы. И помните, что путь - это Местоположение. Вы можете удалить даже миграцию модуля следующим образом. (Любая миграция из anywhare)
И помните, если вы используете серверы Linux, будьте внимательны с учетом регистра. Вы должны добавить как / База данных / Миграции со стартовым капиталом.
источник