2017-08-06 52 views
1

我从来不知道为什么!但我的一个表,名为:Posts被删除,当我在phpMyAdmin中查看我的数据库时!所以我试图再生由php artisan migrate,但我得到这个错误:如何终止在laravel迁移中丢失的数据

[PDOException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists

我的用户表中存在中仅除去帖子表! 这是我的模型:

class Post extends Model 
{ 
protected $table = 'posts'; 
public $primaryKey = 'id'; 
public $timestamps = true; 

public function user() 
{ 
    return $this->belongsTo('App\User'); 

} 
} 

和:

class User extends Authenticatable 
{ 
use Notifiable; 

/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
    'name', 'email', 'password', 
]; 

/** 
* The attributes that should be hidden for arrays. 
* 
* @var array 
*/ 
protected $hidden = [ 
    'password', 'remember_token', 
]; 

public function posts() 
{ 

    return $this->hasMany('App\Post'); 
} 

} 

我不得不在用户迁移到使用这个命令:Schema::dropIfExists('users');并再次运行php artisan migrate。除了用户表中的所有数据之外,所有解决的问题都被删除了!

如何终止laravel中的相同问题?我如何才能在laravel迁移中使用disable data losing,如果发生某些更改会导致数据丢失,请提醒我。

在微软的EF我们有EnableDataLoosing=false; Eloquent在laravel中有相同的东西吗?

+0

“删除表”是指删除它,是在该表中的数据将会丢失。我建议或者创建一个仅数据转储或csv数据,然后在刷新迁移后使用“Seeder”重新填充表。 –

+2

只是我的建议,在生产中迁移任何迁移之前备份数据库 – bhill77

+1

迁移表的状态如何?迁移一旦运行,就不应再运行一次。如果您不希望运行用户表创建代码 - 只需将其插入到迁移表中即可。它不会运行。 –

回答

0

在Laravel 5.5有一个新的命令php artisan migrate:fresh这将降低所有表的重建他们都