Tag: 数据库迁移

在rails中手动编辑schema.rb是否安全?

我遇到了一个问题,我在rails项目的两个分支上工作,每个项目都有一个迁移来添加一个列。 当时, rake db:migrate:reset导致出现问题,我完全依赖schema.rb来正确表示我的数据库状态。 有一次,我遇到了一个问题,即分支A添加的列进入了分支B的模式。由于migrate:reset不是一个选项,我使用手动编辑模式文件。 我提交了这个更改,它基本上删除了分支A中我不需要在分支B的schema.rb中的列。 在将分支A合并到主服务器之后出现了问题。 当我尝试将分支B重新命名为master时,我仍然在B中进行了提交,以删除模式文件中的列(现在已经变得相关,因为它在master中)。 Git没有看到这方面的冲突并自动合并它。 在我的rebase结束时,我发现我的模式与master中的模式不一致。 我的修复是再次编辑模式文件并手动将以前删除的列添加回模式文件。 我的问题是:这被认为是非传统的吗? 危险吗? 哈克? 现在它涉及一列但如果这涉及多列删除/添加(危险?)解决方案可能导致更多问题和db / schema.rb不一致。

我们如何合并具有相同模式的两个数据库?

我们有两个rails应用程序实例,每个实例都与自己的数据库通信; 我们正在使用单个数据库将它们转换为单个应用程序。 我们已经使得需要特定于特定域的部分正常工作; 现在我们只需要合并数据库。 我们要将数据从一个实例复制到另一个实例的数据库中,并修复ID以使它们不重叠。 有很多表有很多外键。 这样做的好方法是什么,外键仍然指向新数据库中的正确行? 如果不清楚,我很高兴用糟糕的ascii艺术复杂化问题。

Ruby on Rails – sqlite 3 rake迁移不更新数据库

我使用的是RoR(3.2.2)和SQLite 3(1.3.5)。 当我最初生成模型时,我能够成功创建数据库。 但是,每当我尝试使用迁移生成器时,它似乎在命令行中没有任何问题(没有错误),但是当我检查数据库时,没有任何更新或更改。 例如,我创建了这个数据库: $ rails generate model User name:string email:string 分贝/迁移/ [时间戳] _create_users.rb class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name t.string :email t.timestamps end end end 我运行迁移: $ bundle exec rake db:migrate 到目前为止,我使用SQLite数据库浏览器检查我的数据库,一切看起来都应该如此。 然后,如果我想添加一个索引: $ rails generate migration add_index_to_users_email 分贝/迁移/ [时间戳] _add_index_to_users_email.rb class AddIndexToUsersEmail < ActiveRecord::Migration def change […]

db迁移回滚的有用性

很多人都在谈论db迁移,特别是关于它的回滚可能性。 我怀疑它是否有用,因为db和model的模式与应用程序逻辑(MVC)紧密相关。 假设我已经完成了一些迁移的回滚。 什么? 应用程序将无法运行,因为它的逻辑完全依赖于db。 db迁移的回滚function有哪些用例? 更新1 主要问题 当我需要更改代码时,为什么回滚会显示为function? 我不创建迁移,例如“add_another_field_to_table”。 相反,每个迁移文件都完整地描述了DB中的每个表。 当我需要更改数据库中的内容时,我只需更改迁移文件,但不要回滚 。 真的,如果我回滚迁移, 它不会像版本控制那样让我回到过去 。 我有很多工作,当计划更改并且回滚没有给我任何东西。

我们有很多数据库迁移文件 – 我们应该保留它们吗?

我们有大约100个数据库迁移文件。 他们中的许多人进行了不可逆转的架构更改。 稍后还有一些迁移可以更改或删除在早期迁移中创建的表。 我们是直接从schema.rb文件创建新数据库,所以我们想知道是否有任何理由保留完整的迁移集? 我们将创建一个基于现有schema.rb的新迁移。

如何更改rails迁移文件中的主键?

我需要像这样迁移一个旧的mysql表: Products name (string, primary_key) 到这个架构: Products id (integer, primary_key, auto_generated) name (unique) 我需要在新表中填充Products.id值。 如何编写rails迁移文件? 我正在使用Rails 3.2.7 我现在有2个问题:1。我找不到在ActiveRecord :: Migration 2中删除主键的方法。我不知道如何为新添加的主键生成值。

Postgres on Rails FATAL:数据库不存在

我重新安装了Postgres(9.2.4),但是我无法使用Rails 3.2.11进行备份。 我做了: brew install postgresql initdb /usr/local/var/postgres pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 所以现在我有 $ psql –version psql (PostgreSQL) 9.2.4 $ which psql /usr/local/bin/psql 我的database.yml文件看起来像 development: adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: Tyler password: host: localhost port: 5432 当我运行rake db:create:all然后rake db:migrate我得到错误: PG::Error: ERROR: relation “posts” does not exist LINE 5: WHERE […]

参考或删除时级联删除选项

在Rails 4.2中,当通过引用或add_reference创建表或添加引用时,如何指定外键应在删除时级联。 生成脚手架的命令: rails g scaffold Child parent:references name:string 导致的迁移: create_table :childs do |t| t.references :parent, index: true, foreign_key: true t.string :name t.timestamps null: false end

Rails迁移:重命名表上的索引

我创建了一个表并添加了一个索引。 在第二次迁移时,我重命名了该表。 该指数会继续运作吗?

如何从SQLite迁移到PostgreSQL(Rails)

我是一个DB菜鸟,所以请和我好心。 我有一些问题通过点击gem将我的SQLite DB推送到Heroku。 与他们交谈,他们告诉我其中一个解决方案可能是将我的数据库从SQLite转换为PostgreSQL。 有一个简单的方法吗? 谢谢 更多信息: – 来自Rails应用程序的数据库 – 我在Mac OS X上 – 刚刚通过macports安装了PostgreSQL