2016-08-27 3 views
0

Я создал некоторые файлы миграции в laravel 5.3. Затем я выполнил команду миграции. После этого я добавил несколько столбцов в таблицу в один из этих файлов миграции, а затем удалил один файл миграции ... затем запустил php artisan migrate: refresh, а затем получил эту ошибку: enter image description here Эта ошибка исходит из файла миграции что я удалил. Кажется, что migrate: обновление все еще нуждается в нем. Итак, как мне решить эту ошибку ...?Как решить неопределенные ошибки файлов миграции в laravel 5.3

Заранее спасибо .. :)

ответ

1

У меня была проблема с этим тоже изначально, но понял, что именно так я реализую свои команды миграции CLI (командной строки). Пожалуйста, прочтите ниже.

При создании файла миграции, а затем запустить PHP ремесленника перенести несколько вещей происходят на свежем пустой базе данных:

  1. таблица миграции была создана для хранения и отслеживания миграций у вас есть в вашем DB И в каталоге файлов миграции.

  2. Метод «UP» файла миграции запускается, и всякая логика в этом методе обрабатывается. В большинстве случаев обычно используется класс Schema для хранения таблицы в базе данных.

=========================================== =========================================

Теперь, когда вы запускаете команду «php artisan migrate: refresh», некоторые всякое случается.

  1. Система проверяет таблицы базы данных на основе того, что хранится внутри таблицы миграции, чтобы увидеть, существуют ли таблицы (-и).

  2. Он будет тщательно расчесывать базу данных и удалять ВСЕ таблицы всех данных.

  3. Затем он будет использовать информацию, хранящуюся в таблице миграций, для проверки того, что закодировал метод «down» класса миграции каждой таблицы, который может потребоваться для обработки.

  4. В большинстве случаев он обычно запускает метод dropIfExists в методе «вниз» этого конкретного класса, принадлежащего к этой таблице, указанной в таблице миграции.

    Вот где ваша ошибка

Если таблица миграции был класс миграции, перечисленные в нем, и система проверяет, чтобы увидеть, что если класс существует в каталоге/миграции базы данных, и это не так ли? Обычно вы получаете какую-то ошибку, которая так или иначе ссылается на недостающую таблицу. Это зависит от того, насколько взаимосвязана эта таблица со всем остальным или если эта таблица даже указана в таблице миграции вообще.

Способ решения этой проблемы - убедиться, что способ обновления базы данных имеет смысл.

Если окончательное удаление файлов миграции

Очистить базу данных и таблицы миграции

  1. ПЕРЕД удалением файлов миграции, выполнить 'PHP aritsan мигрируют: Откат'

  2. Удалите файл миграции.

  3. Выполнить 'PHP мастеровых мигрируют' или 'мигрировать успокой' (если вы действительно хотите)

Если обновление таблицы базы данных

  1. После обновления миграции файл, выполните 'php artisan migrate', чтобы добавить миграцию в новую партию или 'или' migrate: refresh ', чтобы сохранить обновление в пределах одной партии миграции.
+0

Классный ... Спасибо ... :) –

+0

Не проблема =) –

0

Я в конечном итоге создать файл вручную ...: v Может быть есть хороший способ для решения этой проблемы ... :)

1

Удалите db и создайте его снова.

Затем запустите эту команду в командной строке

composer dump-autoload

Затем запустите эту команду

php artisan migrate