Запуск одной конкретной миграции laravel 4 (один файл)
Я не хочу запускать все выдающиеся миграции на laravel 4. У меня есть 5 миграций. Теперь я просто хочу запустить одну миграцию. вместо того, чтобы делать по : PHP ремесленника перенести Я хотел бы запустить одну конкретную миграцию, например: php artisan migrate MY_MIGRATION_TO_RUN
13 ответов:
Похоже, вы делаете это неправильно.
миграции были сделаны для выполнения Laravel один за другим,в точном порядке они были созданы, поэтому он может отслеживать выполнение и порядок выполнения. Таким образом, Laravel сможет безопасно откатить пакет миграций, не рискуя нарушить вашу базу данных.
давая пользователю возможность выполнять их вручную, сделайте невозможным знать (наверняка), как откатить изменения в вашем база данных.
Если вам действительно нужно выполнить что-то в вашей базе данных, вам лучше создать скрипт DDL и вручную выполнить его на вашем веб-сервере.
или просто создать новую миграцию и выполнить ее с помощью artisan.
EDIT:
Если вам нужно сначала запустить его, вам нужно сначала создать его.
Если вам просто нужно изменить их порядок, переименуйте файл, чтобы быть первым. Миграции создаются с помощью timestemp:
2013_01_20_221554_table
чтобы создать новую миграцию перед этой, вы можете назвать ее
2013_01_19_221554_myFirstMigration
просто переместите уже выполненные миграции из папки app/config/database/migrations/. Затем выполните команду
php artisan migrate
. Сработало как заклинание для меня .
хороший маленький фрагмент, чтобы облегчить любые страхи при запуске Laravel 4 миграции
php artisan migrate --pretend
. Это выведет только SQL, который был бы запущен, если бы вы выполнили фактическую миграцию.похоже, что ваши начальные 4 миграции уже были запущены. Я бы предположил, что когда вы
php artisan migrate
он будет запускать только новую, недавнюю миграцию.совет: убедитесь, что все ваши up() и down() работают так, как вы ожидаете. Мне нравится бежать вверх(), вниз (), вверх () когда я бегу миграции, просто чтобы проверить их. было бы ужасно для вас получить 5-6 миграций и понять, что вы не можете откатить их без хлопот, потому что вы не соответствовали down() с up() 100% процентов.
просто мои два цента! Надеюсь, что
--pretend
помогает.
вы можете поместить миграции в другие папки и запустить что-то вроде:
php artisan migrate --path=/app/database/migrations/my_migrations
единственный способ повторно запустить миграцию-это грязный. Вам нужно открыть базу данных и удалить строку в таблице миграции, которая представляет вашу миграцию.
затем снова запустите php artisan migrate.
Вы можете создать отдельный каталог для миграций из терминала следующим образом:
mkdir /database/migrations/my_migrations
а затем переместите конкретную миграцию, которую вы хотите запустить, в этот каталог и выполните следующую команду:
php artisan migrate --path=/database/migrations/my_migrations
надеюсь, что это помогает!
Я дал ответ на другой пост, но вы можете сделать это: запустить
artisan migrate
чтобы выполнить все миграции, затем выполните следующие команды SQL для обновления таблицы миграций, чтобы она выглядела так, как будто миграции выполнялись по одному:SET @a = 0; UPDATE migrations SET batch = @a:=@a+1;
это изменит столбец пакета на 1, 2, 3, 4 .. так далее. Добавить
WHERE batch>=...
условие там (и обновить начальное значение@a
) Если вы хотите повлиять на определенные миграции.после этого, вы можете
artisan migrate:rollback
насколько требуется, и он будет проходить через миграции по одному за раз.
есть один простой способ, который я знаю, чтобы сделать это может быть доступно только для вас на просто локальный хост
- изменить ваш файл миграции по мере необходимости
- откройте phpMyAdmin или все, что вы используете, чтобы увидеть таблицу базы данных
- найдите нужную таблицу и отбросьте ее
- найдите таблицу миграций и откройте ее
- в этой таблице в поле миграция найдите нужное имя таблицы и удалите его строки
- наконец, выполните команду
php artisan migrate
из командной строки или терминала. это позволит перенести только те таблицы, которые не существуют в таблице миграции в базе данных.этот способ полностью безопасен и не будет делать никаких ошибок или проблем, пока он выглядит как непрофессиональный способ, но он по-прежнему отлично работает.
удачи
Если это просто для целей тестирования, вот как я это делаю:
для моего случая у меня есть несколько миграций, одна из них содержит настройки приложения.
пока я тестирую приложение, и не все миграции уже настроены, я просто перемещаю их в новую папку "будущее". Этот folde не будет затронут ремесленником, и он будет выполнять только миграцию, которую вы хотите.
грязный обходной путь, но он работает...
Если вы хотите запустить свой последний файл миграции, вы должны сделать следующее:
php artisan migrate
вы также можете вернуться назад, прежде чем вы добавили миграцию с:
php artisan migrate: rollback
у меня такая же проблема. Скопируйте коды создания таблицы в первый файл миграции что-то вроде ниже:
public function up() { Schema::create('posts', function(Blueprint $table){ $table->increments('id'); // Other columns... $table->timestamps(); }); Schema::create('users', function (Blueprint $table) { $table->increments('id'); // Other columns... $table->softDeletes()->nullable(); }); }
также вы можете изменить (уменьшить)
batch
количество столбцов вmigrations
таблица ;)а потом беги
php artisan migrate
.
бросьте исключение в миграции, если вы не хотите его применять, и это остановит весь процесс миграции.
используя этот подход, вы можете разделить свою кучу миграции на шаги.
Так Просто...! просто перейдите в папку миграции. переместите все файлы миграции в другую папку. затем верните всю миграцию по одному в папку миграции и запустите миграцию для одного из них(php artisan). когда вы вставляете плохой файл миграции в главную папку миграции и запускаете php artisan migrate в командной строке, будет ошибка.