&引用;“php artisan迁移”;“显示”;“无需迁移”;

&引用;“php artisan迁移”;“显示”;“无需迁移”;,php,laravel,laravel-6,artisan-migrate,laravel-artisan,Php,Laravel,Laravel 6,Artisan Migrate,Laravel Artisan,我是拉雷维尔的新手。 我正在制作laravel版本6。 我创建了迁移。 它在第一次运行时效果很好,但是如果我在迁移文件中更改了一些内容,然后运行php artisan migrate,它将显示没有要迁移的内容。 我也尝试了php artisan migrate--path,但它不起作用。 为了使它工作,我必须删除迁移文件并再次创建它。 我不想使用php artisan migrate:fresh 我应该怎么做才能只运行一个已更改的迁移文件?很遗憾,这是不可能的。最好的解决方法是在使用php-ar

我是拉雷维尔的新手。 我正在制作laravel版本6。 我创建了迁移。 它在第一次运行时效果很好,但是如果我在迁移文件中更改了一些内容,然后运行
php artisan migrate
,它将显示
没有要迁移的内容。
我也尝试了php artisan migrate--path,但它不起作用。
为了使它工作,我必须删除迁移文件并再次创建它。
我不想使用
php artisan migrate:fresh


我应该怎么做才能只运行一个已更改的迁移文件?

很遗憾,这是不可能的。最好的解决方法是在使用
php-artisan-migrate:fresh
之后使用播种器和
php-artisan-db:seed
。你为什么不想用这个

当您运行
php artisan migrate
时,它将检查迁移表,如果迁移文件夹中没有新文件,它将不显示任何要迁移的内容

如果要回滚上次迁移

rollback
执行最新的迁移操作,可以使用rollback命令。此命令回滚最后一批迁移,其中可能包括多个迁移文件:

php artisan migrate:rollback
它将删除上次创建的表

migrate:reset
命令将回滚应用程序的所有迁移:

php artisan migrate:reset
migrate:fresh
命令将删除所有表

php artisan migrate:fresh

php artisan migrate:fresh --seed

更多信息:

您不太了解迁移机制

但是,如果我在迁移文件中更改了某些内容,然后运行php artisan migrate,则不会显示任何要迁移的内容

编写迁移是为了在数据库中进行一些更改,并运行一次。若要对数据库进行下一次更新,则需要进行下一次迁移

在开发过程中,您可以通过
php artisan migrate:fresh
重新运行迁移,但在生产过程中,请确保您的迁移实现了您想要的一切


Laravel在“migrations”表中的数据库中存储有关迁移的信息。如果要重置某些迁移文件,可以尝试删除或编辑该表中的某些记录

有两件事你可以用 1.在数据库中有一个名为migrations的表。从中删除要迁移的行。那应该在那里。 2.在数据库/迁移/文件夹中创建文件夹。并将迁移文件放入文件夹中,然后在命令提示符下运行以下命令:

php artisan migrate:refresh --path=database/migrations/folder

选项2比选项1好。我总是用这个。因此,我建议选择2。这应该是可行的

您是否已在迁移表中检查迁移是否已运行。 如果它运行,那么将有一行分别对应于您的迁移。
如果您对旧迁移进行了更改,那么当您运行命令php artisan migrate时,将不会反映任何内容,因为该迁移已经被迁移。

对于现有(已迁移的表)的每次修改,您都必须仅进行修改后的新迁移。如果您有“用户”表迁移
2014\u 10\u 12\u000000\u创建\u用户\u表
如:

 Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');         
        $table->rememberToken();
        $table->timestamps();
    });
您需要拆分“name”列,必须
php artisan make:migration alter\u table\u users--table=“users”
并添加您想要更改的内容:

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('name', 'first_name'); // rename column
    $table->string('last_name'); // add new column  });
逆转

public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->renameColumn('first_name', 'name');
            $table->dropColumn('last_name');
        });
    }
您可以使用
php artisan migrate


文档:

如果您有种子机数据,那么只需执行以下操作:php artisan migrate:fresh--seed。使用播种机数据重新迁移迁移很有帮助

请尝试
php artisan migrate:refresh
migrate:refresh
将删除所有表,然后再次运行迁移。请使用
php artisan migrate:rollback
查看上次创建的迁移文件。因此
php artisan migrate:rollback
不会删除所有表表?所有这些关于
回滚
重置
的信息放在一边,如果您想更改已经运行的迁移,经验法则是“不”。创建一个新的迁移来更改表(添加/删除/更改列等),然后再次运行
php artisan migrate
。迁移是一种“向前移动”的类型,因此您不必运行回滚和数据丢失风险,因为它也会删除“我的用户”表。因此,每次我对迁移文件进行一些更改时,我也必须添加用户。@AkshayRathod用于添加数据播种器的发明我是laravel的新手。我不知道什么是播种机,我必须查一下。是
migrate:fresh
还是
migrate:refresh
?编辑:Nevermind;我在较新的文档中看到了它:
migrate:refresh
将删除所有表并再次自动创建它
migrate:fresh
仅删除表。如果只想删除上次创建的表,则必须使用
migrate:rollback
我不介意,但在新文档中,迁移的概念是相同的。明白了;我以前没有见过
fresh
命令,但它似乎是一个新添加的(Laravel 5.5+)命令,可以有效地执行与
refresh
相同的操作,但不会回滚;它只是放下一切,然后再做一次。很高兴知道!
migrations
表存储迁移和批处理的名称(键)。当您使用各种迁移命令时,手动编辑该表没有多大意义。它也没有
id
autoincrement
列,因此针对它运行SQL有时很麻烦。