Php 运行新创建的迁移文件时发生laravel 5迁移错误
我刚刚创建了一个新的迁移文件,以便在现有表中插入一个新列 文件代码为:Php 运行新创建的迁移文件时发生laravel 5迁移错误,php,laravel,laravel-5,Php,Laravel,Laravel 5,我刚刚创建了一个新的迁移文件,以便在现有表中插入一个新列 文件代码为: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddStatusToPhoto extends Migration { /** * Run the migrations. * * @return void */
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStatusToPhoto extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('photos', function(Blueprint $table)
{
$table->integer('status');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
有人知道问题出在哪里吗?您以前的迁移角色只成功运行了一半。这意味着添加了表
权限\u角色
,但提前终止。因此,迁移从未被标记为完成并添加到migrations
表中。它尝试重新运行权限迁移文件,但失败,因为该表已存在。您需要手动将旧迁移文件添加到数据库中,或者使其成功运行
可以删除代码,或将其包装在if语句中。确保该表在数据库中不存在,并且down()方法应包含能够删除该表的代码。在使用命令“php artisan migrate:refresh”之前,您必须先使用命令“
php artisan migrate
”在迁移表中记录迁移原始文件此外,您还需要更正down方法
migrate:refresh命令将首先回滚所有数据库迁移,然后运行migrate命令。此命令可有效地重新创建整个数据库:
php artisan migrate:refresh
php artisan migrate:refresh --seed
请参阅此项。将这行代码放在迁移中
if(!Schema::hasTable('post')){
Schema::create('post', function (Blueprint $table) {
$table->increments('id');
#etc
});
}
这应该是注释我已经尝试刷新但不起作用(而且我还记得会删除所有数据?),最后我临时删除了所有旧迁移文件在您的权限角色迁移脚本中,必须在
down()
中添加下拉表?我注意到权限角色表没有回滚,当我手动删除它时,同样的错误仍然存在。
if(!Schema::hasTable('post')){
Schema::create('post', function (Blueprint $table) {
$table->increments('id');
#etc
});
}