迁移文件和架构

时间:2011-03-21 04:25:58

标签: mysql ruby-on-rails migration rake

所以我的Mac崩溃了,现在尝试在我的新Mac上构建我的项目。我需要知道运行rake db:migrate何时查看schema.rb文件?

我正在接受

Mysql::Error: Table 'myproject_development.users' doesn't exist: SHOW FIELDS FROM `users`

即使我运行没有引用用户的rake db:migrate:up VERSION=001,我也会遇到同样的错误?

如果重要,我的迁移就像

一样
001_...
002_...
003_...
20100222171241_...

1 个答案:

答案 0 :(得分:3)

迁移代码通常不会查看架构文件。它查看所有迁移文件的名称和名为schema_migrations的数据库表,并确定尚未运行的迁移。 (我相信它会在运行迁移结束时转储模式。)要么丢失了迁移,要么schema_migrations表与数据库不同步。

进行备份后,您可以开始进行故障排除。您是否有创建用户表的迁移?如果没有,它去了哪里?如果你有它,为什么不运行?

仅供参考以数字开头的迁移(例如001)是旧版本的迁移。有时在2.2或2.3左右,迁移的名称已更改为日期,这是您在以后的迁移中看到的。

最初几次迁移的命名方式可能存在问题,而且找不到它们(我无法记住此命名方案切换时的迁移故事)。也许它在当时跟踪迁移的方式不同,所以可能会有一些未来使它与更现代的方案一起工作。您可以使用文件的日期戳,按照新方案相当安全地重命名它们。

希望这有帮助。