【问题标题】:Add extra table using Laravel Migration使用 Laravel 迁移添加额外的表
【发布时间】:2016-07-09 09:31:43
【问题描述】:

我正在使用 Laravel 5.2。我已经使用迁移方法创建了基本表。但现在我需要添加另一个额外的表。创建架构后,我给出了php artisan migrate 命令。但它显示像base table or view already exists Table:Users 这样的错误。我知道为什么会这样。迁移命令试图重新创建已经拥有的表。但是我需要通过迁移在 Laravel 中添加另一个额外的表。我已经经历了这个https://laravel.com/docs/5.2/migrations 但我无法得到任何解决方案。

【问题讨论】:

  • 不完全是,因为迁移表包含已经迁移的内容。这样迁移就不会再次运行。

标签: php mysql laravel database-schema laravel-5.2


【解决方案1】:

如果你已经执行了php artisan migrate,那么下次它会给你错误提示“表已经存在。”。

因此,如果您只想执行特定的迁移,那么您可以暂时将所有已执行的迁移 php 文件移出 database/migrations 文件夹,然后执行

php artisan migrate

您可以从 tinker 执行迁移,即先执行 php artisan tinker,然后从迁移中执行 up 方法 的内容,但没有参数类型 Blueprint

例如。 如果以下是你的向上迁移方法内容

Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
});

那么你将不得不执行

Schema::create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
});

【讨论】:

  • 这就是我所做的。谢谢
  • 最简单的方法是临时移动所有迁移文件并在本地服务器上执行“php artisan migrate”但是,在生产服务器上我建议通过“Laravel Tinker”执行迁移,你尝试了什么方法,解决你的问题? @PraveenSrinivasan
  • 其实我忘记复制迁移表了。所以它显示错误。现在我按照你给出的答案。现在运作良好。谢谢@Akshay
【解决方案2】:

如果你想创建另一个表,只需创建新的迁移并运行它。

如果您尝试将列添加到现有表中,请使用 Schema::table instad of Schema::create

Schema::create('articles', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
}

Schema::table('articles', function (Blueprint $table) {
    $table->string('description');
}

【讨论】:

  • 我创建了新的迁移。但是当我运行 php artisan migrate 命令时,它说Base table User 已经存在
  • 那么,您在::table::create 的新迁移中使用什么?如果您正在尝试创建新表。 Laravel 告诉你表已经存在,那你为什么要创建一个新表呢?
  • 我得到了解决方案。迁移表为空。所以我认为这会出错。
猜你喜欢
  • 2020-01-23
  • 2015-09-22
  • 2020-02-13
  • 2018-04-01
  • 2016-02-11
  • 2020-03-13
  • 2014-03-31
  • 2021-08-30
  • 2019-11-05
相关资源
最近更新 更多