然后,在我的开发机器上进行了更多的更改和另一个迁移,然后将新的应用程序复制到生产机器上。然后我尝试通过运行rake db:migrate RAILS_ENV=production来更新数据库。我收到以下错误消息:"数据库中已经存在名为'schema_migrations'的对象。"
我想,你不是在开玩笑吧Rake...你创建了它!我对rake进行了跟踪,似乎rake认为这是它第一次运行。然而,通过分析我的开发机器和生产机器上的'schema_migrations'表,可以看出存在一个迁移的差异,即我要迁移的那个迁移。
我还尝试显式定义版本号,但也不起作用。
你有什么想法可以使我的生产服务器保持最新状态吗?
更新:
首先,让我说一声,我不能只是“删除”数据库。这是一个已经有超过10万条记录的生产服务器。如果将来出现类似的问题会发生什么?我每次遇到数据库问题都要删除表格吗?这次可能行得通,但这似乎不是每个数据库问题的实际长期解决方案。我怀疑我现在遇到的问题并不是唯一的。
以下是我的三点建议:
1.听起来'schema_info'表和'schema_migrations'表是相同的。在我的设置中,我只有'schema_migrations'。如前所述,在生产服务器上和开发机器上的'schema_migrations'表之间的差异仅为一个记录。也就是说,它包含我要迁移的版本号。 2.从我阅读的书《Simply Rails 2》中可以看出,当第一次转移到生产服务器时,应该运行rake db:schema:load而不是运行rake db:migrate。 3.如果有关系的话,我使用的Rails版本是2.1。