【问题标题】:Laravel Migration taking too longLaravel 迁移耗时过长
【发布时间】:2020-07-17 00:01:51
【问题描述】:

我在使用 Laravel 迁移时遇到了奇怪的经历。

我已经运行了 2 次迁移,第一次不到第二次就通过了。 第二个是需要很长时间并且仍然运行了10多分钟,直到我杀死它。

这没什么大不了的,只是将 2 列添加到包含 23 个条目的表中。是的,只有 23 个条目。

查询本身非常简单:

Schema::table('customers', function (Blueprint $table) {
            $table->boolean('public')->default(0);
            $table->integer('user_id')->nullable();
        });

有什么线索吗?我错过了什么?

是不是因为我的表里已经有 30 列了?

==== 编辑 ====

按照要求,这是通过的另一个迁移

class UpdateUsers extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->integer('shop_id')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

那个不工作的

{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('customers', function (Blueprint $table) {
            $table->boolean('public')->default(0);
            $table->integer('user_id')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {

    }
}

【问题讨论】:

  • 一个表中有三十列是一个糟糕的设计。但它仍然不应该花费 10 分钟。你能分享你的整个迁移吗?他们两个
  • 我已经添加了 2 个迁移。你看到什么了吗?
  • 您需要保留数据还是artisan migrate:fresh 可以选择?
  • 我可以在开发中运行它,但绝对不能在生产中运行。所以是的,我需要运行保存数据
  • 不,30 列不是问题。你有生成的 SQL 吗?

标签: mysql laravel performance migration


【解决方案1】:

最后,我明白发生了什么。 执行一些请求时我有些慢。所以我想到了 MySQL 服务。

我重新启动了它,然后启动了以前不起作用的相同迁移,并且它很完美(0.07 秒)。

我认为检查和/或重新启动 BD 服务器是需要系统检查以及检查语法和表结构的事情。

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2013-06-16
    • 2013-02-26
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多