Я использую структуру Laravel php для разработки. Я хочу использовать миграцию для создания таблиц. Это шаги, которые я сделал:
Я создаю миграцию с помощью команды php artisan migrate:make create_users_table
, которая создает файл миграции и в своей функции up, я записал свою схему, а затем я ее запустил и успешно выполнил.
После этого я снова попробовал выполнить ту же миграцию, и в результате она показывает ошибку, которая «существует таблица».
Затем я попытался использовать функцию отката, но он дал ошибку «ничего откатить».
Итак, как отменить эту миграцию или выполнить функцию переноса. Кроме того, когда я создал новую миграцию и в функции переноса файла, я написал код для удаления таблицы, созданной моей более ранней миграцией, и я выполняю команду с параметром php artisan migrate
, тем самым все миграции были выполнены (также мой предыдущий) и показывает мне ошибка, «таблица уже существует» (очевидно).
Итак, теперь я застрял, есть ли функция для выполнения специальной / конкретной миграции? Как мне это сделать?
Когда вы создаете миграцию с помощью миграции artisan migrate:make
вас писать методы up
и down
. Метод down
должен делать OPPOSITE того, что делает метод up
.
public function up() { Schema::create('users', function($table) { $table->increments('id'); $table->string('username'); }); } public function down() { // We DROP the table because we created it in the "up" method. Schema::drop('users'); }
Это звучит для меня, как будто у вас есть код в вашем методе up
который там не принадлежит, хотя это трудно сказать, не видя ваш код. Я предлагаю вам очистить таблицу migrations
(могут быть или не быть какие-либо записи). Вам также потребуется вручную удалить таблицу, созданную с помощью миграции. Тогда вы можете начать новый.
Помните, что вы также можете использовать dropIfExists
для удаления таблицы, только если она существует.
public function down() { // Drop the table only if it exists. Schema::dropIfExists('users'); }