0
votes

Ne peut pas créer de table dans Laravel "Erreur générale: 1 table a plus d'une clé primaire"

Lorsque vous utilisez la commande suivante PHP Artisan migrer code> Il renvoie l'erreur suivante:

Erreur générale: 1 Tableau - a plus d'une clé primaire p> blockquote>

J'ai essayé de forcer la clé primaire à l'aide de p> xxx pré>

Remarque: strong> L'ID étant référencé dans l'autre tableau est également de données. Tapez BigIncrements p>

Schema::create('stuff', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('class'); 
        $table->timestamps();
        $table->bigIncrements('owner');
        $table->float('price');
        $table->bigIncrements('teacher');
        $table->foreign('owner')->references('id')->on('othertable');
        $table->foreign('teacher')->references('id')->on('othertable');
    });
}


3 commentaires

Je ne connais pas le laravange, mais bigincrages comme il créerait une clé primaire - les champs d'incrémentation automatique sont généralement des PKS.


Pourquoi créez-vous 3 bigUncrements? Changez-le en Integer Field


Voir: laravel.com/docs/5.8/migrations#Creats-Columns


3 Réponses :


1
votes

Vous utilisez bigincrages code> au lieu de INTEGER

BigIncrements code> Créer une clé primaire p>

si propriétaires code> et et et Enseignants CODE> Tables a BigUncriptions CODE> Colonne d'identité afin de remplacer les codes de migration avec: P>

Schema::create('stuff', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('class'); 
        $table->timestamps();
        $table->unsignedBigInteger('owner');
        $table->float('price');
        $table->unsignedBigInteger('teacher');
        $table->foreign('owner')->references('id')->on('othertable');
        $table->foreign('teacher')->references('id')->on('othertable');
    });
}


0 commentaires

1
votes

Vous devez créer le propriétaire et l'enseignant biginteger au lieu de xxx


0 commentaires

1
votes

évidemment bigincrages DataType de Laravel va faire ce champ clé primaire . Dans ce cas, vous avez trois clés principales qui sont ID, propriétaire et enseignant . Pour supprimer les deux derniers des touches principales, ajoutez le code suivant dans votre fichier de migration. XXX

Également, si ces deux champs (propriétaire, enseignant) sont des champs de référence, je suppose que vous ne le faites pas besoin de leur donner un type de données de bigincrements. Les modifier à Unsignedbiginteger peut être un meilleur choix.


0 commentaires