迁移回滚恢复以前的模式,但以前的数据丢失
migration rollback reverts the previous schema but previous data is lost
我有一个用户 table 具有以下架构:
用户
- ID
- 姓名
- 用户名
- 密码
此 table 包含 10 条记录,我使用迁移更新架构。
然后我删除列 name 并添加两列 firstName 和 lastName 更新的用户 table 架构如下:
更新的用户Table
- ID
- 名
- 姓
- 用户名
- 密码
然后我使用迁移回滚来恢复我以前的模式
用户
- ID
- 姓名
- 用户名
- 密码
但现在 name 列的数据丢失了?迁移不应该让我回到以前的状态(通过恢复以前的模式和数据)
不,对不起。迁移 仅 负责数据库结构。它与您的数据无关。事实上,默认情况下,当您回滚之前的迁移时,回滚会执行 table drop,这意味着 table 中的所有数据都将丢失。
我认为 迁移可以恢复(恢复)我们的数据 需要更多的努力。我们可以在 up() 部分编写一个例程,它可以进行备份,在 down() 部分编写一个相应的例程,它可以恢复以前的架构以及备份数据。
我有一个用户 table 具有以下架构:
用户 - ID - 姓名 - 用户名 - 密码
此 table 包含 10 条记录,我使用迁移更新架构。 然后我删除列 name 并添加两列 firstName 和 lastName 更新的用户 table 架构如下:
更新的用户Table - ID - 名 - 姓 - 用户名 - 密码
然后我使用迁移回滚来恢复我以前的模式
用户 - ID - 姓名 - 用户名 - 密码
但现在 name 列的数据丢失了?迁移不应该让我回到以前的状态(通过恢复以前的模式和数据)
不,对不起。迁移 仅 负责数据库结构。它与您的数据无关。事实上,默认情况下,当您回滚之前的迁移时,回滚会执行 table drop,这意味着 table 中的所有数据都将丢失。
我认为 迁移可以恢复(恢复)我们的数据 需要更多的努力。我们可以在 up() 部分编写一个例程,它可以进行备份,在 down() 部分编写一个相应的例程,它可以恢复以前的架构以及备份数据。