1
votes

Erreur lors de la migration de la base de données (Laravel): la table existe déjà

J'ai installé le package de forum d'authentification et de discussion de Laravel. Lorsque j'ai essayé de migrer la base de données, j'ai eu cette erreur:

php artisan migrate

J'ai essayé de migrer avec la commande:

Migrating: 2014_10_12_000000_create_users_table

   Illuminate\Database\QueryException  : SQLSTATE[42S01]: Base table or view alr eady exists: 1050 Table 'users' already exists (SQL: create table `users` (`id` int unsigned not null auto_increment primary key, `name` varchar(255) not null, `email` varchar(255) not null, `email_verified_at` timestamp null, `password` va rchar(255) not null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb 4_unicode_ci')

  at C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Databas e\Connection.php:664

    660|         // If an exception occurs when attempting to run a query, we'll  format the error
    661|         // message to include the bindings with SQL, which will make th is exception a
    662|         // lot more helpful to the developer instead of just the databa se's errors.
    663|         catch (Exception $e) {
    664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42S01]: Base table or view already exists: 1050 T able 'users' already exists")
      C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Databa se\Connection.php:458

  2   PDOStatement::execute()
      C:\xampp\htdocs\Application\vendor\laravel\framework\src\Illuminate\Databa se\Connection.php:458

  Please use the argument -v to see more details.


1 commentaires

Étant donné que les utilisateurs existent déjà, recherchez ce fichier et commentez tout dans la fonction Haut. Cela permettra à la migration de continuer sans supprimer le fichier.


4 Réponses :


2
votes

Si vous vérifiez la trace d'erreur, il est dit presque en bas:

La table de base ou la vue existe déjà: 1050 utilisateurs peuvent déjà existe ") C: \ xampp \ htdocs \ Application \ vendor \ laravel \ framework \ src \ Illuminate \ Databa se \ Connection.php: 458

Cela signifie que la table users existe déjà, donc lorsque vous exécutez vos migrations, elle essaie de créer une table qui est déjà créée dans votre base de données, d'où l'erreur. p >

Pour annuler ces migrations avant de les relancer, vous pouvez faire:

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

Vérifiez les documentations concernant restauration des migrations .

Cela exécutera la fonction down () de tous les fichiers de migration déjà migrés dans votre système avant d'exécuter les fichiers up () .

Si vous accédez à la migration de vos utilisateurs , vous pouvez voir le down () , cela devrait ressembler à ceci:

database / migrations / XXXX_XX_XX_XXXXXX_create_users_table.php

php artisan migrate:refresh


4 commentaires

Migrer: le rafraîchissement affiche la même erreur. Lorsque j'essaye de revenir en arrière, la migration affiche "Rien à annuler". La fonction Down ressemble à ça.


Si vous accédez à votre table migrations (celle qui enregistre les migrations déjà exécutées), elle répertorie la migration de la table users? Sinon, vous devrez supprimer manuellement la table users (directement dans votre base de données)


Le tableau des migrations est vide. J'ai essayé de supprimer la table des utilisateurs, mais rien!


Si vous avez déjà supprimé la table users , il ne devrait y avoir aucune erreur (car il ne devrait y avoir aucun conflit). Êtes-vous sûr d'utiliser la même connexion dabatase que celle que vous configurez?



0
votes

Eh bien, toujours que j'installe laravel, j'obtiens la même erreur. Essayez de changer le code dans vos fichiers de migration comme ceci:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email',64{ADD THIS PARAMETER})->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

Vous devez ajouter un deuxième paramètre aux chaînes (longueur maximale) qui sont uniques ou clés, comme l'e-mail. N'oubliez pas d'effacer votre base de données des tables afin que lorsque vous exécutez php artisan migrate la base de données soit claire.


0 commentaires

0
votes

Une commande migrate:refresh annulera toutes vos migrations, puis exécutera la commande migrate . Cette commande recrée efficacement toute votre base de données:

php artisan migrate:refresh

// Refresh the database and run all database seeds...
php artisan migrate:refresh --seed

Une autre solution consiste à: Supprimer la table users table de la base de données également supprimer les entrées des utilisateurs de la table migrations .

Ensuite, exécutez la commande migrate Artisan: php artisan migrate p >


0 commentaires

0
votes

Je suis sûr que cela fonctionnera car j'ai le même problème, mais j'ai résolu avec ce

  php artisan migrate:fresh

veuillez essayer de vérifier

MISE À JOUR

Supprimez le projet et installez un nouveau projet laravel

et effectuez des chnages dans votre fichier .env et

dans database.php

 php artisan make:auth 

 php artisan migrate


0 commentaires