PHP artisan migrate:refresh是从数据库中删除所有当前数据

时间:2015-03-27 05:18:50

标签: php laravel laravel-5

如果我使用PHP artisan migrate:refresh命令,它每次都会从其他表中删除旧数据。

我该怎么做才能成功运行我的迁移并且我的旧数据不会被删除?

5 个答案:

答案 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即可。您将看到不会删除您的数据并添加新字段