Rails Git 分支的迁移问题

Rails Git Migration Issue With Branches

还是新手。我正在为 RoR 应用开发一项新功能。我创建了一个本地 b运行ch 并生成了一个迁移。不幸的是,我没有保存对迁移文件的更改,然后 运行 db:migrate。想要重新开始,我切换回 master 并从我的 git 中退出并使用以下命令进行硬重置(我从未在本地或远程提交 b运行ch 中的文件):

git fetch --all
git reset --hard origin/master

然后我重新制作了一个本地 b运行ch,重新创建了迁移(这次是正确的)和 运行 db:migrate。我收到一条错误消息,指出 table 已存在于数据库中,但是,当我查看 schema.db 时,table 不存在。

我只想回到我基于遥控器的地方git。对于它的价值,我在 AWS 上使用 Cloud9 进行开发。谢谢!

关于git的修改与数据库无关。一旦你 运行 像 rake db:migrate 这样的 rake 任务进行数据库更改,一旦你更改分支它就会自动恢复,你必须准备回滚步骤。 (因为迁移中的 down 方法通常是 运行)

您的旧迁移版本与重新创建的新迁移版本不同,因此应用程序尝试 运行 迁移文件而不检查 table 是否存在。

每当您 运行 rake db:migrate 进入特定数据库时,它会将迁移版本存储在您的 schema_migrations table 数据库中。因此,一次又一次地调用相同的 rake 不会尝试创建具有相同名称的 table。在上述情况下,您有不同的迁移文件来创建相同的 table 和 schema_migration table 不知道您是否删除了带有旧迁移文件的分支,或者 table 是否已经存在

因此 运行 在您的 rails 控制台中关注,

ActiveRecord::Migration.drop_table :table_name

然后 运行 你的 rake db:migrate