ruby-on-rails - 将 Rails 迁移标记为已迁移

标签 ruby-on-rails ruby migration

我最终成功复制了 9 个迁移。 (我认为这是因为我在我的开发和生产机器上安装/更新了 Gems 和/或引入了它们的迁移,但在这个阶段我不完全确定。)

我从生产服务器上的 rails 目录中移出一组重复的 9,但现在我想在生产中 db:migrate 以运行另一次迁移,我得到:

$ bundle exec rake db:migrate RAILS_ENV=production
[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.checkout" is no longer supported
==  CreatePages: migrating ====================================================
-- create_table(:pages)
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'pages' already exists: CREATE TABLE `pages` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `title` varchar(255), `body` text, `slug` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB

这是因为迁移实际上已经运行。

我宁愿避免为每一个执行 db:migrate:downdb:migrate:up - 我认为这将意味着生产数据库中的数据丢失. (在这种情况下,Spree 中的几个静态页面。)

有没有一种方法可以让 Rails 安装忘记所有未完成的迁移,有效地将所有未完成的迁移标记为已完成?

最佳答案

我是这样解决的:

  1. 转到冲突的迁移文件。

  2. 删除内容并保存。

  3. 运行rake db:migrate

  4. Ctrl+Z 文件回到之前的状态。

这是一个特例,因为我从另一个应用程序复制了数据库,并且我有冲突的迁移等等。

关于ruby-on-rails - 将 Rails 迁移标记为已迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605700/

相关文章:

ruby-on-rails - rails 4中secret_key_base有什么用

ruby-on-rails - 防止子域上的 SSL

ruby - 如何获取两个数组之间的最大值数组

mysql - 将数据从旧模式迁移到新模式

iphone - 核心数据强制自定义映射模型/策略而不是轻量级迁移

android - 如何在版本之间进行数据库迁移单元测试

ruby-on-rails - CarrierWave Fog 凭证,拒绝访问

ruby-on-rails - 在给定月份中按天按 `created_at` 获取元素计数

ruby-on-rails - Rails 应用程序中的 Iconv.conv 将 unicode 转换为 ASCII//translit

ruby - “运行失败跳转到方法定义”错误 : undefined method `current_line' for TextMate:Module