web-dev-qa-db-ja.com

PHP artisan migrateは新しいテーブルを作成しない

私はLaravelが初めてで、Laravel Documentationsといくつかのチュートリアルビデオをフォローしています。ただし、このphp artisan migrateコードをローカルCMD Promptで実行していますが、phpmyadminDatabase Tableを作成していません。 stackoverflowにはこれに関連する同様のトピックがいくつかありますが、私の問題を解決できるものはありません。この重複をマークしないでください。

OK、このようになります。このコードを実行します

php artisan make:migration create_student_table --create=student

新しいファイルが移行フォルダーに2016_04_08_061507_create_student_table.phpとして作成されます

そのファイルで私はこれを実行しますcode

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

    class CreateStudentTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('student', function (Blueprint $table) {
                $table->increments('id');
                $table->timestamps();
                $table->string('name', 20); 
                $table->string('email', 255);
            });
        }

        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::drop('student');
        }
    }

次に、cmdphp artisan migrateを実行しますが、studentテーブルを作成しませんでした。代わりに、このメッセージが表示されています

[PDOException] SQLSTATE [42S01]:ベーステーブルまたはビューは既に存在します:1050テーブル 'users'は既に存在します

上記と同様の方法を使用して、数日前にusersテーブルを作成しました。ただし、新しいstudentテーブルは作成されていません。ここに何か欠けていますか?前もって感謝します。

11
Prabin Parajuli

つまり、Laravelは最初にusersテーブル移行を実行しようとしています。開発中で、データを保持する必要がない場合は、usersテーブルを実行してからphp artisan migrate

11
Jeff

[〜#〜] edit [〜#〜]

新しい移行ファイルを実行する前に、既にデータベース\移行フォルダから移行を実行して移動します。新しい移行を実行した後、以前の移行に戻ります。

つまり、すでにphp artisan migrate一度、テーブルはデータベースに既に存在します。時々composer dump-autoload職人が嘘をついている場合。

そのため、編集して実行する前に最後の変更をロールバックする必要がありますphp artisan migrate。ロールバックするには、php artisan migrate:rollback

また、すべての変更を削除する場合は、php artisan migrate:reset

有る php artisan migrate --force強制的に移行を強制的に実行します。

これらのすべての手順を実行した後、移行を実行できない場合、その開発環境の場合は、データベースを削除してデータベースを再度作成し、php artisan migrate

4
aimme

私はLaravel setup(mac os Sierra 10.12.16)で同様の問題を抱えており、atomでMAMPを使用し、最終的な解決策を見つけられませんでした。次の手順に従いました。

ローカル環境をセットアップするときに、次の手順を使用すると、後で移行の問題が発生しないことがわかりました。

IN AppServiceProvider.php  add the following code:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    //
    Schema::defaultStringLength(191);
}

then in database.php:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

THEN FINALLY IN .env:

DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=
DB_DATABASE=hackable
DB_USERNAME=root
DB_PASSWORD=root

最終的にセットアップを正しくするのに数日かかったので、これが誰かを助けることを願っています:)

2
hiltondeville

ユーザーの移行権はありますか?その場合、ユーザー作成テーブルを次の中に挿入します。

if(!Schema::hasTable('users')) ...
1
Kayo Hamid

データベースにはすでにこのテーブルがあります。ドロップして、laravel artisanで作成してください。

1
Kayo Hamid

なぜわざわざ?

php artisan migrate:freshを使用できます。これにより、現在のユーザーテーブルが無視され、新しいテーブルが再作成されます。

0
Tgold brain

MAMPサーバーを使用している場合、データベース接続のためにこのエラーが発生することがあります。これはポート番号のためです。通常、MAMPを使用している場合、mysqlデータベースのポート番号は8889であり、設定で変更し、artisanコマンドを実行する必要があります。

0
Govinda Poddar