我从来不知道为什么!但我的一个表,名为: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中有相同的东西吗?
“删除表”是指删除它,是在该表中的数据将会丢失。我建议或者创建一个仅数据转储或csv数据,然后在刷新迁移后使用“Seeder”重新填充表。 –
只是我的建议,在生产中迁移任何迁移之前备份数据库 – bhill77
迁移表的状态如何?迁移一旦运行,就不应再运行一次。如果您不希望运行用户表创建代码 - 只需将其插入到迁移表中即可。它不会运行。 –