我是laravel的新手。
我正在使用laravel版本6。
我已经创建了迁移。
第一次可以很好地运行,但是如果我更改了迁移文件中的某些内容,然后运行php artisan migrate
,它将显示nothing to migrate
。
我也尝试过php artisan migrate --path
,但是它不起作用。
为了使其正常工作,我必须删除迁移文件并再次创建它。
我不想使用php artisan migrate:fresh
。
我应该怎么做才能只运行一个已更改的迁移文件?
答案 0 :(得分:3)
运行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
更多信息:document
答案 1 :(得分:2)
非常不可能。最好的解决方法是使用播种器,并在使用php artisan db:seed
之后使用php artisan migrate:fresh
。您为什么不想使用它?
答案 2 :(得分:2)
如果您有种子数据,则只需执行以下操作:php artisan migration:fresh-seed。它有助于使用种子数据重新迁移您的迁移
答案 3 :(得分:1)
您对迁移机制并不了解。
但是,如果我更改了迁移文件中的某些内容,然后运行php artisan migration,则显示没有要迁移的内容
您编写迁移以对数据库进行一些更改,然后运行一次。如果要对数据库进行下一次更新,则需要进行下一次迁移。
在开发过程中,您可以按php artisan migrate:fresh
重新运行迁移,但是在生产时,请确保您的迁移满足了您的所有需求。
Laravel在表'migrations'中将有关迁移的信息存储在数据库中。如果要重置某些迁移文件,则可以尝试删除或编辑该表中的某些记录。
答案 4 :(得分:1)
您是否已在迁移表中检查迁移是否已经运行。 如果运行,则将有一行与您的迁移有关。 如果您对旧的迁移进行了更改,那么运行php artisan migration命令将不会反映任何内容,因为它已被迁移。
答案 5 :(得分:0)
您可以做两件事 1.在数据库中,有一个表,称为迁移。从那里删除要迁移的行。那应该在那里。 2.在数据库/迁移/文件夹内创建一个文件夹。并将迁移文件放在文件夹中,然后在命令提示符下运行以下命令:
php artisan migrate:refresh --path=database/migrations/folder
选项2优于选项1。我总是使用它。所以我建议选择2。这应该可行
答案 6 :(得分:0)
对于现有(已经迁移的表)上的每个修改,您都将仅使用修改进行新迁移。如果您有“用户”表迁移2014_10_12_000000_create_users_table
,例如:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
,您需要拆分“名称”列,必须php artisan make:migration alter_table_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
文档:https://laravel.com/docs/6.x/migrations#modifying-columns