wake-up-neo.net

PHP Handwerker migrieren keine neue Tabelle erstellen

Ich bin neu bei Laravel und folge Laravel Documentations sowie einigen Tutorial-Videos. Ich führe diesen php artisan migrate-Code jedoch in meinem lokalen CMD Prompt aus und erzeuge nicht Database Table in phpmyadmin. Es gibt noch einige wenige ähnliche Themen in stackoverflow, die jedoch nicht mein Problem gelöst haben. Bitte nicht dieses Duplikat markieren.

Ok, es geht so. Ich führe diesen Code aus

php artisan make:migration create_student_table --create=student

und eine neue Datei wird im Migrationsordner als 2016_04_08_061507_create_student_table.php erstellt.

Dann in dieser Datei führe ich diese codeaus

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

Dann habe ich in cmdphp artisan migrate ausgeführt, aber es wurde keine student-Tabelle erstellt. Stattdessen wird diese Nachricht angezeigt

[PDOException] SQLSTATE [42S01]: Basistabelle oder -ansicht ist bereits vorhanden: 1050 Tabelle 'Benutzer' existiert bereits

Ich habe vor einigen Tagen users table mit einer ähnlichen Methode wie oben erstellt. Es wird jedoch keine neue student-Tabelle erstellt. Fehlt mir hier etwas? Danke im Voraus.

8
Prabin Parajuli

Das bedeutet, dass Laravel zuerst die Migration der Tabelle users ausführt. Wenn Sie sich in der Entwicklung befinden und Ihre Daten nicht aufbewahren müssen, können Sie einfach die users-Tabelle löschen und dann php artisan migrate ausführen.

10
Jeff

EDIT

verschieben Sie bereits ausgeführte Migrationen aus dem Ordner "Datenbank\Migrations" bevor Sie neue Migrationsdateien ausführen. nach dem Ausführen der neuen Migrationen Gehen Sie zurück in die vergangenen Migrationen, wo sie vorher waren.

Das bedeutet, dass Sie php artisan migrate bereits einmal ausgeführt haben und die Tabelle bereits in der Datenbank vorhanden ist. Manchmal müssen Sie ein composer dump-autoload ausführen, wenn der Handwerker lügt. 

sie müssen also entweder die letzte Änderung rückgängig machen, bevor Sie php artisan migrate bearbeiten und ausführen. Zum Zurücksetzen können Sie php artisan migrate:rollback verwenden.

Wenn Sie alle Änderungen entfernen möchten, können Sie php artisan migrate:reset ausführen. 

Es gibt php artisan migrate --force, um die Migration zwangsweise auszuführen.

Wenn Sie alle diese Schritte ausgeführt haben und die Migration nicht ausführen können, löschen Sie in der Entwicklungsumgebung die Datenbank, erstellen Sie die Datenbank erneut und führen Sie php artisan migrate aus. 

4
aimme

Ich hatte ein ähnliches Problem mit meinem Laravel - Setup (Mac os Sierra 10.12.16) und der Verwendung von MAMP mit Atom und habe keine endgültige Lösung gefunden, bis ich die nächsten Schritte befolgt habe.

Beim Einrichten meiner lokalen Umgebung habe ich festgestellt, dass die folgenden Schritte die Migrationsprobleme später verhindert haben.

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

Hoffe, das hilft jemandem, da ich Tage gebraucht habe, um das Setup endlich richtig zu machen :)

2
hiltondeville

Haben Sie ein Benutzermigrationsrecht? Wenn ja, fügen Sie Ihre Benutzererstellungstabelle in Folgendes ein:

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

Ihre Datenbank hat diese Tabelle bereits, lassen Sie sie einfach fallen und lassen Sie Laravel von einem Handwerker erstellen.

1
Kayo Hamid

warum die Mühe?

du kannst php artisan migrate:fresh Dies ignoriert die aktuelle Benutzertabelle und erstellt die Tabellen neu.

0
Tgold brain

Wenn Sie einen MAMP-Server verwenden, wird dieser Fehler manchmal aufgrund von Datenbankverbindungen angezeigt. Dies ist auf die Portnummer zurückzuführen. Normalerweise ist die Portnummer der mysql-Datenbank während der Verwendung von MAMP 8889, die Sie in Ihrer Konfiguration ändern und Ihren Handwerkerbefehl ausführen müssen, damit er sicher funktioniert. 

0
Govinda Poddar