13

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

わかりました、それはこのようになります。このコードを実行します

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');
        }
    }

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

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

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

4

9 に答える 9

14

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

于 2016-04-08T06:27:23.393 に答える
5

編集

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

これは、すでにphp artisan migrate1 回実行しており、テーブルがデータベースに既に存在していることを意味します。composer dump-autoload職人が嘘をついている場合は、時々行う必要があります。

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

また、すべての変更を削除したい場合は、実行できますphp artisan migrate:reset

php artisan migrate --force強制的に移行を実行する必要があります。

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

于 2016-04-08T06:42:05.320 に答える
2

Laravel セットアップ (mac os Sierra 10.12.16) で同様の問題が発生し、MAMP を atom で使用しており、次の手順に従うまで決定的な解決策が見つかりませんでした。

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

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

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

于 2017-11-02T13:48:49.757 に答える
1

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

于 2016-04-08T06:46:13.397 に答える