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.
4 Réponses :
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
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?
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.
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 >
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
É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.