所以我的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_...
答案 0 :(得分:3)
迁移代码通常不会查看架构文件。它查看所有迁移文件的名称和名为schema_migrations
的数据库表,并确定尚未运行的迁移。 (我相信它会在运行迁移结束时转储模式。)要么丢失了迁移,要么schema_migrations
表与数据库不同步。
进行备份后,您可以开始进行故障排除。您是否有创建用户表的迁移?如果没有,它去了哪里?如果你有它,为什么不运行?
仅供参考以数字开头的迁移(例如001
)是旧版本的迁移。有时在2.2或2.3左右,迁移的名称已更改为日期,这是您在以后的迁移中看到的。
最初几次迁移的命名方式可能存在问题,而且找不到它们(我无法记住此命名方案切换时的迁移故事)。也许它在当时跟踪迁移的方式不同,所以可能会有一些未来使它与更现代的方案一起工作。您可以使用文件的日期戳,按照新方案相当安全地重命名它们。
希望这有帮助。