Я не хочу запускать все выдающиеся мигранты на laravel 4. У меня 5 миграций. Теперь я просто хочу выполнить одну миграцию. вместо выполнения: php artisan migrate Я хотел бы выполнить одну конкретную миграцию, например: php artisan migigate MY_MIGRATION_TO_RUN
Похоже, вы делаете это неправильно.
Миграции выполнялись Laravel один за другим, в том порядке, в котором они были созданы, поэтому он может отслеживать выполнение и порядок выполнения. Таким образом, Laravel сможет БЕСПЛАТНО откатить пакет миграции, не рискуя сломать вашу базу данных.
Предоставление пользователю возможности выполнять их вручную, не позволяет (точно) узнать, как отменить изменения в вашей базе данных.
Если вам действительно нужно что-то выполнить в своей базе данных, лучше создать DDL script и выполнить его вручную на своем веб-сервере.
Или просто создайте новую миграцию и выполните ее с помощью 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() работают так, как вы ожидаете. Мне нравится запускать(), down(), up(), когда я запускаю свои миграции, чтобы проверить их. Было бы ужасно, если бы вы получили 5-6 переходов и поняли, что не можете откатить их обратно без хлопот, потому что вы не сопоставляете down() с up() 100% процентов.
Просто мои два цента! Надеемся, что --pretend
поможет.
Вы можете переносить миграцию в другие папки и запускать что-то вроде:
php artisan migrate --path=/app/database/migrations/my_migrations
Единственный способ повторной миграции - грязный. Вам нужно открыть свою базу данных и удалить строку в таблице миграции, которая представляет вашу миграцию.
Затем запустите php artisan снова.
This table does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.
Я дал этот ответ на другой пост, но вы можете сделать это: запустите artisan migrate
, чтобы запустить все миграции, а затем следующие команды SQL, чтобы обновить таблицу миграций, сделав ее похожей на миграцию, выполняемую по одному за раз
SET @a = 0;
UPDATE migrations SET batch = @a:=@a+1;
Это изменит колонку пакета на 1, 2, 3, 4 и т.д. Добавьте там WHERE batch>=...
условие (и обновите начальное значение @a
), если вы хотите только повлиять на некоторые миграции.
После этого вы можете artisan migrate:rollback
столько, сколько требуется, и он будет проходить через миграции по одному за раз.
Вы можете создать отдельный каталог для своих миграций с вашего терминала следующим образом:
mkdir /database/migrations/my_migrations
И затем переместите конкретный перенос, который вы хотите запустить в этот каталог, и запустите эту команду:
php artisan migrate --path=/database/migrations/my_migrations
Надеюсь, это поможет!
У меня такая же проблема. Скопируйте коды создания таблицы в первый файл миграции, как показано ниже:
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 migrate
Вы также можете вернуться назад, прежде чем добавить перенос с помощью:
php artisan migrate: rollback
Если это просто для тестирования, вот как я это делаю:
В моем случае у меня есть несколько миграций, один из которых содержит параметры App-Settings.
Пока я тестирую приложение, а не все миграции уже настроены, я просто перемещаю их в новую папку "будущее". Этот склад не будет затронут мастером, и он выполнит только миграцию, которую вы хотите.
Грязное обходное решение, но оно работает...
Есть один простой способ, который я знаю, чтобы сделать это можно только для вас только на локальном хосте
php artisan migrate
из командной строки или терминала. это приведет только к миграции таблиц, которые не существуют в таблице миграции в базе данных.Этот способ абсолютно безопасен и не будет делать никаких ошибок или проблем, пока он выглядит непрофессионально, но он все равно отлично работает.
удача
Выбросьте исключение в переносе, если вы не хотите его применять, и это остановит весь процесс миграции.
Используя этот подход, вы можете разделить кучу миграции на этапы.
так просто...! просто перейдите в папку переноса. переместите все файлы миграции в другую папку. затем верните все миграции один за другим в папку миграции и выполните миграцию для одного из них (php artisan). когда вы вставляете файл с плохой миграцией в главную папку миграции и запускаете миграцию php artisan в командной строке, будет ошибка.
php artisan migrate --path="app/database/migrations/my_single_migration"