Laravel Миграция шоу "Определено несколько первичных ключей" - PullRequest
1 голос
/ 24 января 2020

Моя laravel миграция похожа на приведенную ниже

public function up()
{
    Schema::create('account_main', function (Blueprint $table) {
      $table->increments('user_sn')->primary();
      $table->string('member_username', 20);
      $table->string('login_password', 255);
      $table->integer('login_count')->default('0')->unsigned();
    });
}

Когда я запустил «php Ремесленная миграция», отобразится ошибка «1068 Множественный первичный ключ». Может ли кто-нибудь помочь найти проблему.

Ответы [ 2 ]

1 голос
/ 24 января 2020

Вам не нужен ->primary(), потому что уже ->increments('...') включает его.
Это как если бы в MySQL вы написали:

PK INT AUTO_INCREMENT PRIMARY KEY;
PRIMARY KEY(PK)

Вы объявляете два раза одно и то же первичный ключ

0 голосов
/ 24 января 2020

В Laravel Eloquent ORM тип increments будет автоматически определен как primary key. Поэтому не нужно использовать метод primary().

Если столбец является целым числом.

$table->increments('user_sn');

Если столбец является строкой

$table->string('user_sn')->primary();

Если вы хотите, чтобы любой другой столбец был уникальным (вместо первичного ключа)

$table->increments('user_sn');
$table->string('member_username', 20)->unique(); // cannot contain duplicate values
...