问题标签 [schema.rb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - drop_table 迁移无法删除表
我读了很多关于它的内容,但我仍然无法摆脱我的数据库中的一张表:
我没有创建此表的迁移。但我认为这张表来自先前安装的acts_as_votable gem。但我可能已经手动删除了这个迁移......
我尝试如下 drop_table ,但它不起作用。即使我有这个迁移文件,投票表仍然存在:
我应该怎么做才能从我的schema.rb文件中删除这个表?
编辑:解决方案
即使在运行迁移之后,该表仍在我的schema.rb中,所以我使用了 rails 控制台:
而这张桌子终于消失了。
ruby-on-rails - 让我们的 CI 服务器自动运行 rails 迁移并提交 schema.rb 是个好主意吗?
在我的公司,我们看到字段出现/消失、出现错误表以及schema.rb
文件中冲突的间歇性问题。这些问题一直在发生,浪费了我们的时间。
我很难让我的同事相信我们的迁移/schema.rb
问题可以通过使用标准工作流程来解决。
首先,事实:
- 我们
schema.rb
有源代码控制 - 我们知道这
schema.rb
应该是我们数据库的最终事实来源 - 我们在生产/QA 中使用 SqlServer,在开发/测试中使用 Postgresql
- 这意味着我们实际上有两个
schema.rb
文件:一个用于 SqlServer,一个用于 Postgresql。 - 我们当前的
schema.rb
文件与我们的生产数据库不同步,因为我们允许开发人员通过本地更改来污染它。
我相信(大部分)我们的迁移/schema.rb
问题将通过遵循这个简单的规则来解决:
在运行迁移之前,请始终将架构加载到新创建的数据库中:
rake db:drop db:create db:schema:load db:migrate
然后,仔细检查您的更改,以确保只有迁移中的更改被提交到 schema.rb
我的同事认为最好不要让开发人员更改schema.rb
,而是在我们的 Jenkins 服务器上设置一个任务,该任务将运行迁移并自动提交更改到schema.rb
. 他说我们应该从我们的流程中去除人为因素,并使工作自动化,这不会让未来发生问题。
虽然我相信自动化工作,但我不认为这是最好的解决方案,因为它只是针对症状而不是原因。自动化 git 提交让我很紧张,因为很多事情都可能出错。更重要的是,分离迁移及其相应的schema.rb
变化对我来说似乎是一个非常糟糕的主意。我们不应该继续让我们的开发人员忽视污染的负面影响schema.rb
。相反,我们应该教他们一个更好的工作流程,避免污染schema.rb
,并让他们知道在将来发生问题时调试问题。
人们可以权衡并推荐我们的哪种解决方案更好吗?还是我们还没有想到的更好的解决方案?
mysql - sqlite 数据库中是否可以有相同的索引名称?
我有一个 Ruby on Rails 应用程序,开发数据库在 Mysql 中。我决定使用 sqlite 数据库进行测试。为了做到这一点,我做了以下事情:
配置database.yml文件以支持 test.sqlite3 用于测试环境
使用转储当前开发数据库模式
rake db:schema:dump
- 尝试使用 schema.rb 通过命令在 test.sqlite3 数据库文件中生成表。
rake db:test:clone
然后就轰轰烈烈了。我有一个例外
当我仔细检查迁移文件和架构时,我意识到在多个表中使用了相同的索引名称。例如,schema.rb 中的一些语句是这样的:
我知道mysql在表的范围内保持索引名称的唯一性。现在一个简单的解决方案可能是恢复到mysql用于测试数据库。我无法弄清楚的是在这种特殊情况下是否有可能从 schema.rb 生成一个 sqlite 文件。
现在是奇怪的部分。我进行了以下更改并在虚拟应用程序中进行了测试。
有效!现在我可能很想在我的真实应用程序中做同样的事情。严酷的现实是有很多地方我需要进行重命名和生产,这将不仅仅是一项繁琐的任务,因为如果我删除旧索引并添加新索引,我们有数百万条记录会受到影响(Mysql 5.5) . 有出路吗?
ruby-on-rails - 如何在 Ruby on Rails 中重新创建 Schema.rb(删除后)?
我错误地(有点)删除了我的 Schema.rb,我似乎无法通过使用 rake db:dump 将其重新生成到 db/ 中,我现在真的不知道该怎么做。
一些建议 rake db:dump:all rake db:create:all rake db:migrate
没有任何效果。请帮忙!
ruby-on-rails - 无法从 rails 应用程序中删除 schema.rb 中的表
我使用 Rails 4.0 和 Ruby 2.3.0
我有一个小的 Rails 应用程序。起初,我想根据每个用户注册的内容为他/她分配不同的角色。所以我从https://github.com/MartinJNash/Royce试用了“Royce”宝石
在看到它对我的要求来说太复杂后,我将其卸载。
然后我尝试了“简单角色”gem,看看它是如何从这里https://github.com/stanislaw/simple_roles工作的。我也卸载了tat。当我的应用程序中有这两个 gem 时,我运行了 db:migrate。
现在我不想在我的 schema.rb 中找到这两个 gem 的对应表。它并不完全干扰我的应用程序,但我想删除它们。
以下是我的 schema.rb 文件
即使我已经卸载了 2 个角色-gems,每次我运行 rake db:migrate 时,我都会得到上述模式。
我只在我的应用程序中使用“会话”和“供应商”表。知道我应该怎么做才能摆脱这些不需要的表吗?
ruby-on-rails - 我可以重建 db/schema.rb 以包含多个数据库而不进行迁移吗?
我有一个使用三个不同现有数据库的 Rails 5 应用程序。此应用程序不需要迁移。我想构建db/schema.rb
包括所有三个数据库,而不仅仅是主数据库。执行rake db:schema:dump
使用主数据库重建模式。我相信有一种方法可以做到这一点,但由于某种原因,我一直在寻找的方式我找不到任何关于此的信息。我发现的所有帖子都讨论了如何使用来自不同数据库的模型,而不是如何重建模式以包含所有数据库。
ruby-on-rails - 无论分支如何,迁移都会运行
我在不同的分支上工作,在这些分支上有迁移文件。有一个schema.rb
文件。
我的问题是,无论我目前在哪个分支上,运行迁移schema.rb
都会以某种方式改变,就好像它考虑了所有分支上的所有迁移一样。
说,我已经在具有相应表Foo
的分支上创建了模型,运行迁移并切换到另一个分支。A
foos
在我当前没有表bars
的分支上运行其他迁移(比如创建表) ,创建它:B
foos
问题:如何schema.rb
仅根据当前分支上的迁移进行更改?
ruby-on-rails-5 - 在 Rails 5 中,设置 config.active_record.schema_format = :sql 但仍然在 db:migrate 上创建 schema.rb
在 Rails 5 应用程序上工作,我想使用structure.sql
而不是schema.rb
(我们正在使用带有大量自定义 SQL 调用的 PostGIS...)。在config/initializers/database_options.rb
我有以下内容:
如果我运行以下命令:
它生成db/schema.rb
,而不是 db/structure.sql
。
铁轨指南说:
有两种方法可以转储模式。这是由 config.active_record.schema_format 设置在 config/application.rb 中设置的,它可以是 :sql 或 :ruby。
我在这里缺少什么魔法?
ruby-on-rails - 如何在 Rails 应用程序中重新排序表列?
我在我的 Rails 应用程序中创建了一个模型,一段时间后意识到我忘记添加一些属性,后来通过生成的迁移添加了它们。
我现在意识到属性列schema.rb
的顺序是它们将出现在 ActiveAdmin 中生成的资源视图中的顺序。
当我在 ActiveAdmin 中查看该模型时,我想对列重新排序,而我认为这样做的唯一方法是更改数据库中的列顺序。
我查看了此处和此处,并尝试使用change_table
or运行数据库迁移change_column
。这没有产生任何变化。
这是我运行的迁移,但没有结果:
为了以特定顺序查看 ActiveAdmin 中的属性列,我运行了数据库迁移以更改列,但迁移并未对列重新排序。