24

laravel(Laravel 4)を使用して新しいアプリをセットアップしていますが、移行によるデータベースのセットアップで問題が発生しています。

次のコマンドで移行ファイルを作成しました。

artisan migrate:make --table="jobs" --create jobs

期待どおりにデータベース/移行にファイルを作成しましたが、これにいくつかの変更を加え、を使用して起動しました

artisan migrate --env=local

しかし、私はの返事を受け取っています"Nothing to migrate"

なしで実行しようとすると--env=local、環境固有ではないため、使用したくないconfigフォルダー(ローカル/ステージング/本番フォルダーではない)のdatabase.phpが使用されます。

私の最初の考えは大丈夫でした、多分私はmigrate:make呼び出しにenvフラグを置く必要があるので、それを試しましたが、移行ファイルを作成できなかったというエラーが発生しました。それから、とにかくenvベースの移行を行うのは意味がないと思いました...それらは汎用的に作成し、envごとに実行する必要があるため、最終的にはすべての環境で同じ移行スクリプトを使用します。

だから私は今ここからどこに行くべきかについて少し立ち往生しています

4

4 に答える 4

32

移行コマンドの前に環境を指定する必要があります。

artisan --env=local migrate

実行artisan helpすると、コマンドが従う形式が表示されます。

artisan help

Usage:
  [options] command [arguments]
于 2012-11-21T10:52:21.053 に答える
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

お役に立てれば :)

于 2016-07-17T13:39:58.490 に答える
3

解決しました。

migrate:make解決策は、local / database.php(またはproduction / database.phpなど)を編集し、移行パス変数が移行ファイルを作成している場所を指していることを確認することでした。変更するだけです。

'application' => __DIR__.'/../database/migrations',

'application' => DIR.'/../../database/migrations',
于 2012-11-21T11:51:41.353 に答える
1

移行の実行後に移行を変更する場合は、最初に移行をロールバックする必要があります。

php artisan migrate:rollback

変更した移行がロールバックされるまで、それを実行し続けます。または、次のコマンドでスキーマ全体をリセットできます。

php artisan migrate:reset

ただし、移行を最新の状態にするには、通常のように移行を呼び出す必要があります。

php artisan migrate

最後に、を呼び出してリセットしてから移行できます

php artisan rebuild

また、文字通り作成したばかりでない限り、移行を行った後に変更することは一般的に悪い習慣であることに注意してください。デプロイしたら、変更せずに、新しい移行ファイルを作成する必要があります。

お役に立てれば。

編集:私はどういうわけかLaravel4インジケーターを見逃しました。これらのコマンドのほとんどはまだ機能すると思いますが、調整が必要な場合があります。

于 2012-11-21T10:54:15.247 に答える