Mysql 迁移文件和模式

Mysql 迁移文件和模式,mysql,ruby-on-rails,migration,rake,Mysql,Ruby On Rails,Migration,Rake,所以我的Mac电脑坏了,现在正试图在我的新Mac电脑上构建我的项目。我需要知道在运行rakedb:migrate时,它是否查看schema.rb文件 当我越来越 Mysql::Error: Table 'myproject_development.users' doesn't exist: SHOW FIELDS FROM `users` 即使当我运行rakedb:migrate:up VERSION=001时,也会遇到同样的错误,因为它没有引用用户 如果有关系的话,我的迁移从 001_...

所以我的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_...

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

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

仅供参考,以数字开头的迁移(例如
001
)是较旧版本的迁移。大约在2.2或2.3版本的某个时候,迁移的名称被更改为日期,这就是您在以后的迁移中看到的

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


希望这有帮助。

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

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

仅供参考,以数字开头的迁移(例如
001
)是较旧版本的迁移。大约在2.2或2.3版本的某个时候,迁移的名称被更改为日期,这就是您在以后的迁移中看到的

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


希望这能有所帮助。

当您运行
rake db:migrate
时会发生什么?您的迁移文件怎么会有
nnn
201002171241..
前缀?好吧,前者是“旧方式”,后者是“新方式”。旧项目未被触及,1.5年后重新启动。当我运行rake db:migrate时,在使用新命名格式重命名旧迁移文件之前和之后,我获取Mysql::错误:表“myproject\u development.users”不存在:显示
用户的字段
运行
rake db:migrate
时会发生什么?迁移文件如何具有
nnn\u
201002171241..
前缀?好吧,前者是“旧方式”,后者是“新方式”。旧项目未被触碰,1.5年后重新启动。当我运行rake db:migrate时,在使用新的命名格式重命名旧迁移文件之前和之后,我得到了Mysql::错误:表“myproject\u development.users”不存在:显示
用户的字段
发现了它。my environment.rb config.active_record.observators=:user_observator如果我取出它,它会运行迁移,那么我会在它们运行后将其放回。这意味着您在迁移中提到了您
user
类。。。一个冒险的提议,找到了。my environment.rb config.active_record.observators=:user_observator如果我取出它,它会运行迁移,那么我会在它们运行后将其放回。这意味着您在迁移中提到了您
user
类。。。冒险的提议。