php Laravel 8 Eloquent迁移生成错误“1068多个主键定义”

yvgpqqbh  于 2023-11-16  发布在  PHP
关注(0)|答案(2)|浏览(114)

我有以下迁移文件:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateHeadersTable extends Migration
{
    public function up()
    {
        Schema::create('headers', function (Blueprint $table) {

        $table->increments('entry')->unsigned();
        $table->string('id',16);
        $table->string('address',256);
        $table->string('desciption',512)->nullable()->default('NULL');
        $table->tinyInteger('currency',)->default('0');
        $table->decimal('sum',13,4);
        $table->datetime('entered');
        $table->tinyInteger('aborted',)->default('0');
        $table->primary('entry');

        });
    }

    public function down()
    {
        Schema::dropIfExists('headers');
    }
}

字符串
这个文件是由一个在线工具从SQL文件自动生成的。然而,当我运行php artisan migrate时,我得到了以下错误:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'headers'
already exists (SQL: create table `headers` (`entry` int unsigned not null
auto_increment primary key, `id` varchar(16) not null, `address`
varchar(256) not null, `desciption` varchar(512) null default 'NULL', 
`currency` tinyint not null default '0', `sum` decimal(13, 4) not null, 
`entered` datetime not null, `aborted` tinyint not null default '0') 
default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:712
    708▕         // If an exception occurs when attempting to run a query, we'll format the error
    709▕         // message to include the bindings with SQL, which will make this exception a
    710▕         // lot more helpful to the developer instead of just the database's errors.
    711▕         catch (Exception $e) {
  ➜ 712▕             throw new QueryException(
    713▕                 $query, $this->prepareBindings($bindings), $e
    714▕             );
    715▕         }
    716▕     }

      +9 vendor frames
  10  database/migrations/2023_01_31_1675138133_create_headers_table.php:23
      Illuminate\Support\Facades\Facade::__callStatic()

      +22 vendor frames
  33  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()


我不熟悉Laravel迁移文件。我如何解决这个问题?非常感谢!

uhry853o

uhry853o1#

不要手动删除表。请使用php artisan migrate:rollback,然后重试php artisan migrate

4c8rllxm

4c8rllxm2#

你得到的错误状态表'头'已经存在于数据库中,如果你已经从数据库中删除表,只是检查他们可能是在数据库中的迁移表中的条目,只是删除它,并再次运行迁移

相关问题