php - Laravel 锻造 : Base table or view already exists: 1050 Table already exists

标签 php mysql laravel

我以前也遇到过这个错误,但这次有点不同。

当我向 Forge 推送更新时,Laravel Forge 说它部署失败,但它部署得很好。由于此错误,它只是没有对数据库结构进行任何更改:

[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'job_posts' already exists

当我运行 php artisan migrate:status 时,job_posts 表是唯一显示为未运行的表,即使它显然已经运行过。

删除现有表或任何会删除现有记录的操作也是不可能的,因为此更改是在几周前进行的,并且用户已经开始使用它。

有没有办法在不删除现有记录的情况下解决这个问题?

最佳答案

在您的迁移中,您只需使用

if (!Schema::hasTable('job_posts')) {
  // your migrations
}

如果为 false,则运行迁移。

这样您的记录就不会被删除。

希望这有帮助

关于php - Laravel 锻造 : Base table or view already exists: 1050 Table already exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858795/

相关文章:

php - 在一个提交上更新多个表,将 id 从第一个表传递到第二个表

php - 返回值必须是 ?Illuminate\\Database\\Query\\Builder, App\\Models\\ModelName 返回的类型

php - 如何使用按钮将数据写入 mysqli 数据库

php - iOS和PHP之间的AESCrypt解密

php - 更新/删除 Google 应用条目 - 未找到 ETag

php - AngularJS 和 Laravel 使用什么应用程序结构?

database - Grammar.php 第 39 行中的 ErrorException : Array to string conversion

php - Wordpress 精选文章代码错误

mysql - 创建临时表运行了 30 分钟但未完成

mysql - SQL:选择其他表中不存在的位置