web-dev-qa-db-fra.com

PHP artisan migrer ne pas créer une nouvelle table

Je suis nouveau sur Laravel et je suis Laravel Documentations ainsi que quelques vidéos tutorielles. Cependant, j'utilise ce code php artisan migrate dans mon CMD Prompt local et il ne crée pas Database Table dans phpmyadmin. Il y a quelques autres sujets similaires liés à ceci dans stackoverflow mais aucun n'a résolu mon problème. S'il vous plaît ne marque pas ce doublon.

Ok, ça va comme ça. Je lance ce code

php artisan make:migration create_student_table --create=student

et le nouveau fichier est créé dans le dossier de migration en tant que 2016_04_08_061507_create_student_table.php

Puis, dans ce fichier, je lance cette 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');
        }
    }

Puis, dans cmd, je lance php artisan migrate mais il n’a pas créé la table student. Au lieu de cela, il montre ce message

[PDOException] SQLSTATE [42S01]: La table ou la vue de base existe déjà: 1050 'utilisateurs' de la table existent déjà

J'ai créé la table users il y a quelques jours en utilisant une méthode similaire à celle décrite ci-dessus. Mais la nouvelle table student n'est pas en cours de création. Est-ce que je manque quelque chose ici? Merci d'avance.

8
Prabin Parajuli

Cela signifie que Laravel tente d'exécuter d'abord la migration de la table users. Si vous êtes en développement et que vous n'avez pas besoin de conserver vos données, vous pouvez simplement supprimer la table users puis exécuter php artisan migrate.

10
Jeff

MODIFIER

déplacer déjà effectué les migrations à partir du dossier database\migrations, avant d'exécuter de nouveaux fichiers de migration. après avoir exécuté les nouvelles migrations revenir dans les migrations passées où il était avant.

Cela signifie que vous avez déjà exécuté php artisan migrate une fois et que la table est déjà présente dans la base de données. Parfois, vous devez faire un composer dump-autoload si l'artisan ment. 

vous devez donc soit annuler la dernière modification avant d’éditer et d’exécuter php artisan migrate. pour revenir en arrière, vous pouvez utiliser php artisan migrate:rollback

De même, si vous souhaitez supprimer toutes les modifications, vous pouvez exécuter php artisan migrate:reset

Il existe php artisan migrate --force pour forcer l'exécution forcée de la migration.

Après avoir suivi toutes ces étapes et si vous ne pouvez pas exécuter la migration, si c'est l'environnement de développement, supprimez à nouveau la base de données create database et exécutez php artisan migrate

4
aimme

J'ai eu un problème similaire avec ma configuration Laravel (mac os Sierra 10.12.16) et l'utilisation de MAMP avec atome et je n'ai pas trouvé de solution définitive avant d'avoir suivi les étapes suivantes.

Lors de la configuration de mon environnement local, l'utilisation des étapes suivantes a permis d'éviter les problèmes de migration ultérieurement,

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

J'espère que cela aide quelqu'un, car il m'a fallu des jours pour enfin configurer correctement :)

2
hiltondeville

Avez-vous un droit de migration des utilisateurs? Si c'est le cas, insérez votre table de création utilisateur à l'intérieur de:

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

Votre base de données a déjà cette table, il suffit de la laisser et de la laisser créer par artisan.

1
Kayo Hamid

Parfois, si vous utilisez le serveur MAMP, vous pouvez obtenir cette erreur en raison de la connectivité de la base de données. C'est à cause du numéro de port, généralement lors de l'utilisation de MAMP, le numéro de port de la base de données mysql est 8889. Vous devez le modifier dans votre configuration et exécuter votre commande artisan. 

0
Govinda Poddar