如果我使用PHP artisan migrate:refresh
命令,它每次都会从其他表中删除旧数据。
我该怎么做才能成功运行我的迁移并且我的旧数据不会被删除?
答案 0 :(得分:5)
这是预期的行为。
迁移刷新将删除所有表,然后重新安装所有迁移。所以任何数据都会丢失。
如果要将更多迁移添加到当前数据库,您应该只运行php artisan migrate
- 这只会运行尚未发生的迁移。
答案 1 :(得分:1)
全部清洁:
php artisan migration:fresh
清理特定表
php artisan tinker然后选择App \ Post :: truncate()
答案 2 :(得分:0)
是,这是此命令的预期行为。如果你想只运行特定表,
将迁移文件复制到迁移文件夹中的临时文件夹“temp”,然后运行(路径如L5中所示):
php artisan migrate --path = database / migrations / temp
这样它只会运行该文件而不会弄乱你当前的表。
答案 3 :(得分:0)
删除使用以前迁移创建的单个表也会从迁移表中删除迁移名称,然后执行迁移而不删除记录。
答案 4 :(得分:0)
如果要更改数据库但不希望删除旧数据,则必须通过另一个迁移文件添加数据库修改。例如,如果要向表中添加一个字段(比如将“地址”字段添加到“用户”表中)已经有一些数据,则首先要创建一个类似php artisan make:migration add_address_to_users
的迁移。在创建的文件中,您只需在表中添加一列,如下所示。
Schema::table('users', function($table){
$table->string('address');
});
在命令行中,您只需输入php artisan migrate
即可。您将看到不会删除您的数据并添加新字段