执行 php artisan migrate 会导致数据丢失?

执行 php artisan migrate 会导致数据丢失?大家有遇到过这个问题嘛~
看了下laravel的文档,文档里面提示执行迁移操作确实可能会造成数据丢失,有大佬能解释下执行这个命令为什么会造成数据丢失嘛:

gongmeng
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6
翟宇鑫

因为 migration 提供了 drop column、drop index 甚至 drop table 等不少破坏性接口

9个月前 评论

因为你可以在migration里面删改字段,数据,表,索引

9个月前 评论

我一般不会强制迁移,有问题还可以回去修改。

刚才翻了 源码
8.x 没用用到 –force 参数
9.x/10.x 有用到这个参数

9个月前 评论
sanders

跟你直接动表结构的效果一样,比如删字段或者缩减字段长度,必然会造成数据损失。

9个月前 评论

打开 \Illuminate\Database\Console\Migrations\MigrateCommand ,就能看到 handle 第一个调用的就是 confirmToProceed,这里就是 force 选项第一次使用的地方,默认情况下,当判断设置的环境是 production(生产)时,就不允许你运行迁移。你必须要加上 force 选项,才能在生产种运行。


除了上面的 force 使用,下面还有在当数据库不存在(MySQL 和 SQLite),如果没有 force 选项或者,就可能会询问你是否要创建数据库(配置文件种的数据库名字或选中连接的数据库名字),如果有 force 的情况下,就会直接创建了。


正如这句话的后半段所说,force 在这里的主要目的,就是避免你在生产环境中执行迁移文件。在没有添加这个选项时,在生产环境中是无法运行迁移的,加了之后就可以运行。

而这里的破坏性主要就来源于你迁移文件中是怎么写的,你可能在迁移中删除、创建、修改了数据、字段、表信息等。

破坏性造成的是你自己带来的,而不是框架造成的。

9个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!