首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6,切换Git分支后的架构文件与迁移文件不匹配

Rails 6,切换Git分支后的架构文件与迁移文件不匹配
EN

Stack Overflow用户
提问于 2020-12-18 09:13:48
回答 2查看 342关注 0票数 0

Rails 6,用sqlite3进行开发。

我的schema.rb有一个不应该存在的文件:没有迁移文件(在当前的git分支上)说应该生成它。从名字上我可以看出,这是我之前放弃的一个分支,而wen没有回来尝试一种不同的方法来构建我的rails应用。

双重检查:当我试图访问Rails控制台中的表时,会得到一个名称错误,所以它只在模式文件中,而不是在数据库本身中。

我是否可以强制rails运行和或确认当前模式是否匹配迁移文件,如果不匹配,将运行迁移吗?

编辑/更新:--我需要澄清一下,我有6个迁移文件,我查看了这些文件,以确保它们都不是来自以前被遗弃的分支。

(admins是引起争议的表) rails命令行中的ActiveRecord::Base.connection.tables生成:["schema_migrations", "ar_internal_metadata", "events", "admins", "details"],当我执行Event时,将得到列的名称和类型。但是当我做管理的时候

代码语言:javascript
复制
Traceback (most recent call last):
        1: from (irb):3
NameError (uninitialized constant Admin)

因此,问题是:如何正确地将数据库重置为

EN

回答 2

Stack Overflow用户

发布于 2020-12-18 09:17:17

schema.rb文件是从数据库的当前状态自动生成的,所以只需运行rails db:migrate来重新生成schema.rb文件即可。

票数 1
EN

Stack Overflow用户

发布于 2020-12-18 18:59:03

运行rails db:migrate:reset removed似乎解决了这个问题:我的模式文件中没有'admins‘,而且它在rails命令行中运行ActiveRecord::Base.connection.tables时也不会显示出来。

我相信这是由Git引起的,因为它在文件中包含了DB:/db/*.sqlite3和'admins‘是在我先前放弃的分支上创建的,从未合并过。因此,它被保存在数据库中,但是迁移文件在我返回的时候被删除了,并在时间线的早些时候创建了一个新的分支。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65354329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档