Я создаю новое приложение с laravel (Laravel 4) и имею некоторые проблемы с настройкой базы данных через миграции.
Я сделал файл миграции с:
artisan migrate:make --table="jobs" --create jobs
Создав файл в базе данных / миграциях, как и ожидалось, я сделал несколько модов, и пошел, чтобы запустить его, используя
artisan migrate --env=local
Но я получаю ответ "Nothing to migrate"
Если я попробую запустить без --env=local
, он использует database.php в папке config (не в локальной / промежуточной / производственной папке), которую мы не хотим использовать, так как это не будет специфично для среды.
Моя первая мысль была в порядке, может быть, мне нужно поставить флаг env на migrate:make
call, поэтому я попробовал это, но получил ошибку, заявив, что не может создать файл миграции. Тогда я подумал, что в любом случае нет смысла делать env-ориентированные миграции … они должны быть созданы родовыми и просто запускаться на основе env, поэтому в конце все среды используют одни и те же сценарии миграции.
Поэтому я немного застрял здесь, куда идти отсюда
Перед командой migrate необходимо указать среду.
artisan --env=local migrate
Запуск artisan help
показывает формат, в котором должны следовать команды.
artisan help Usage: [options] command [arguments]
Решено.
Решение состояло в том, чтобы просто отредактировать файл local / database.php (или production / database.php и т. Д.), Убедившись, что переменная пути миграции указывает на местоположение, которое migrate:make
создает файлы миграции, просто измените
'application' => __DIR__.'/../database/migrations',
в
'application' => DIR.'/../../database/migrations',
Если вы измените миграцию после ее запуска, сначала вам нужно отменить миграцию.
php artisan migrate:rollback
Продолжайте работать, пока миграция, которую вы изменили, не откат. Кроме того, вы можете сбросить всю схему с помощью
php artisan migrate:reset
Но тогда вам нужно будет назвать свои миграции нормальными, чтобы обновить их.
php artisan migrate
Наконец, вы можете выполнить сброс, а затем выполнить миграцию, вызвав
php artisan rebuild
Также обратите внимание, что, как правило, неправильная практика заключается в том, чтобы модифицировать ваши миграции после их создания, если только вы просто не сделали это. После его развертывания вы не должны изменять его и вместо этого создавать новый файл миграции.
Надеюсь это поможет.
Редактировать: я как-то пропустил индикатор Laravel 4. Большинство из этих команд все еще работают, я верю, но вам, возможно, придется приспособиться.
Я вычислил решение для запуска migrate
для разных баз данных. В принципе, команда artisan migrate --env=local
не работает. Но мы можем определить новую строку соединения в config\database.php
. Например:
<?php 'mysql_testing' => [ 'driver' => 'mysql', 'host' => env('DB_TESTING_HOST'), 'database' => env('DB_TESTING_DATABASE'), 'username' => env('DB_TESTING_USERNAME'), 'password' => env('DB_TESTING_PASSWORD'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => 'prefix_', ],
И укажите --database
когда мы запускаем artisan migrate
следующим образом:
php artisan migrate --database=mysql_testing
Надеюсь это поможет 🙂