如何让 Laravel 在迁移过程中不被自己的会话表阻塞?

问题描述 投票:0回答:1

我按照 https://jetstream.laravel.com/installation.html 的说明安装 Laravel Jetstream。

我运行 artisan jetstream:install 并选择安装 Livewire 支持、API 支持、电子邮件验证和 PHPUnit 支持。

然后我安装前端资产并设置 Laravel Sail。然后我运行以下命令:

sail artisan db:wipe

...并获得令人鼓舞的输出:

INFO  Dropped all tables successfully.

...但是当我这样做时

sail artisan migrate
我看到这个输出:

   INFO  Preparing database.  

  Creating migration table ............................................................................. 24ms DONE

   INFO  Running migrations.  

  2014_10_12_000000_create_users_table ................................................................. 22ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ................................................. 27ms DONE
  2014_10_12_200000_add_two_factor_columns_to_users_table ............................................... 9ms DONE
  2019_08_19_000000_create_failed_jobs_table ........................................................... 20ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ................................................ 40ms DONE
  2023_08_30_094442_create_sessions_table .............................................................. 46ms DONE
  2023_08_30_094639_create_sessions_table ............................................................... 1ms FAIL

   Illuminate\Database\QueryException 

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'sessions' already exists (Connection: mysql, SQL: create table `sessions` (`id` varchar(255) not null, `user_id` bigint unsigned null, `ip_address` varchar(45) null, `user_agent` text null, `payload` longtext not null, `last_activity` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:801
    797▕                     $this->getName(), $query, $this->prepareBindings($bindings), $e
    798▕                 );
    799▕             }
    800▕ 
  ➜ 801▕             throw new QueryException(
    802▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
    803▕             );
    804▕         }
    805▕     }

      +9 vendor frames 

  10  database/migrations/2023_08_30_094639_create_sessions_table.php:14
      Illuminate\Support\Facades\Facade::__callStatic()
      +24 vendor frames 

  35  artisan:35
      Illuminate\Foundation\Console\Kernel::handle()

呃哦!有人知道我做错了什么吗?

(正如我所说,这是全新安装。我还没有触及 IDE 中的任何内容。)

php mysql laravel eloquent database-migration
1个回答
0
投票

您遇到的错误表明“sessions”表已存在于您的数据库中,并且当您运行“sail artisan migrate”命令时,Laravel 正在尝试再次创建它。如果在运行迁移之前未正确擦除数据库,则可能会出现此问题。

要解决此问题,请按照以下步骤操作:

  1. 手动删除会话表:
DROP TABLE IF EXISTS sessions;

这将确保会话表从您的数据库中删除。

  1. 再次擦除数据库:

删除“sessions”表后,运行以下命令来擦除数据库:

sail artisan db:wipe

此命令应从数据库中删除所有表,包括会话表。

  1. 运行迁移

数据库被擦除后,您可以继续运行迁移:

sail artisan migrate

此命令现在应该执行迁移,而不会遇到与“sessions”表相关的任何问题。

通过手动删除“sessions”表,然后在再次运行迁移之前擦除数据库。我希望这能够解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.