- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在还原上次迁移时遇到问题。
自从我安装了'letrate' gem 进行评级后,任何rake db:rollback
都会精确地还原那个letrate gem 迁移而不是预期的最后一个迁移。
我怀疑这是 gem 本身的问题。
有什么办法可以解决这个问题,让我可以享受非常方便的回滚吗?
同样的问题:
rake db:migrate:redo
结果:
== CreateRates: reverting ====================================================
-- drop_table(:rates)
-> 0.0224s
== CreateRates: reverted (0.0225s) ===========================================
== CreateRates: migrating ====================================================
-- create_table(:rates)
NOTICE: CREATE TABLE will create implicit sequence "rates_id_seq" for serial column "rates.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "rates_pkey" for table "rates"
-> 0.1787s
-- add_index(:rates, :rater_id)
-> 0.0032s
-- add_index(:rates, [:rateable_id, :rateable_type])
-> 0.0024s
== CreateRates: migrated (0.1850s) ===========================================
rake 数据库:迁移:状态
...
up 20121205224038 Rename user address column
up 20121206125016587 ********** NO FILE **********
up 20121206125016605 ********** NO FILE **********
up 20121210152550 Create reservations
up 20121210180233 Create transactions
up 20121210215840 ********** NO FILE **********
up 20121218144200 Create videos
up 20121218144800 Add video to videos
up 20130108225007 Devise invitable add to users
up 20130130202046 Acts as taggable on migration
up 20130205154206 Create commissions
up 20130207133520 Add user id to event transition
和文件
-rw-r--r--@ 1 joel staff 137 Dec 7 16:40 20121205224038_rename_user_address_column.rb
-rw-r--r--@ 1 joel staff 443 Dec 7 16:40 20121206125016587_create_rating_caches.rb
-rw-r--r--@ 1 joel staff 432 Dec 7 16:40 20121206125016605_create_rates.rb
-rw-r--r--@ 1 joel staff 429 Dec 10 23:30 20121210152550_create_reservations.rb
-rw-r--r--@ 1 joel staff 414 Dec 10 19:03 20121210180233_create_transactions.rb
-rw-r--r--@ 1 joel staff 237 Dec 18 15:44 20121218144200_create_videos.rb
-rw-r--r--@ 1 joel staff 172 Dec 18 16:18 20121218144800_add_video_to_videos.rb
-rw-r--r--@ 1 joel staff 758 Jan 8 23:50 20130108225007_devise_invitable_add_to_users.rb
-rw-r--r-- 1 joel admin 775 Jan 30 21:20 20130130202046_acts_as_taggable_on_migration.rb
-rw-r--r--@ 1 joel admin 422 Feb 5 17:05 20130205154206_create_commissions.rb
-rw-r--r--@ 1 joel admin 266 Feb 7 15:20 20130207133520_add_user_id_to_event_transition.rb
最佳答案
好的,问题是您的 letrate 迁移的版本号。 Rails 只是对迁移文件中的时间戳进行排序,以了解最近应用了哪一个。时间戳多了 3 位,20121206125016605_create_rates.rb 和 20121206125016587_create_rating_caches 总是会被检测为最后一次迁移。
让我们尝试修复它并清理您的迁移状态。首先回滚有问题的迁移:
rake db:rollback STEP=2
您的 rake db:migrate:status
现在应该如下所示:
up 20121205224038 Rename user address column
up 20121210152550 Create reservations
up 20121210180233 Create transactions
up 20121210215840 ********** NO FILE **********
up 20121218144200 Create videos
up 20121218144800 Add video to videos
up 20130108225007 Devise invitable add to users
up 20130130202046 Acts as taggable on migration
up 20130205154206 Create commissions
up 20130207133520 Add user id to event transition
现在让我们修复它们的版本号(假设您的迁移位于默认的 db/migrate
文件夹中)
mv db/migrate/20121206125016605_create_rates.rb db/migrate/20121206125017_create_rates.rb
mv db/migrate/20121206125016587_create_rating_caches.rb db/migrate/20121206125016_create_rating_caches.rb
现在您的 db:migrate:status
应该如下所示:
up 20121205224038 Rename user address column
down 20121206125016 Create rating caches
down 20121206125016 Create rates
up 20121210152550 Create reservations
up 20121210180233 Create transactions
up 20121210215840 ********** NO FILE **********
up 20121218144200 Create videos
up 20121218144800 Add video to videos
up 20130108225007 Devise invitable add to users
up 20130130202046 Acts as taggable on migration
up 20130205154206 Create commissions
up 20130207133520 Add user id to event transition
现在“时间表”已确定,但我们仍需要重新应用这些迁移。 rake db:migrate
不会工作,因为最后一次迁移现在是 20130207133520_add_user_id_to_event_transition.rb 并且它已经被应用所以 rake 认为它是最新的......所以我们有欺骗 rake:通过注释 down
方法中的所有内容,编辑迁移状态输出中 20121206125017_create_rates.rb 之后出现的每个迁移文件。如果只有 change
方法,请对其进行注释并创建空的 up 和 down 方法。所以所有这些 down 方法都是这样的:
def down
# This is the old code
# which I will uncomment later...
end
您还需要创建一个空迁移,因为有一个没有关联文件的奇怪迁移(********** NO FILE **********
一个)。因此,创建一个名为 db/migrate/20121210215840_ghost_migration.rb 的文件,内容如下:
class GhostMigration < ActiveRecord::Migration
def up
end
def down
end
end
现在我们已经准备好模拟回滚。也一样
rake db:rollback STEP=9
迁移状态输出现在应该是
up 20121205224038 Rename user address column
down 20121206125016 Create rating caches
down 20121206125016 Create ratings
down 20121210152550 Create reservations
down 20121210180233 Create transactions
down 20121210215840 Ghost migration
down 20121218144200 Create videos
down 20121218144800 Add video to videos
down 20130108225007 Devise invitable add to users
down 20130130202046 Acts as taggable on migration
down 20130205154206 Create commissions
down 20130207133520 Add user id to event transition
现在您可以通过取消注释您之前评论的内容并删除“Ghost migration”文件,将文件更改回它们的原始状态。
您实际上应该像我们一样评论“up”方法使用之前的down方法,删除“Ghost migration”文件并迁移所有内容
rake db:migrate
最后取消注释您在文件中注释掉的所有内容,然后事情应该会顺利运行(我希望)。
关于为什么首先会发生这种情况,我认为这实际上是由于 gem 本身,在我看来它不应该生成那些具有无效(或至少是非标准)版本号的迁移。看起来 gem 在同一秒内生成了两个迁移,所以也许作者添加了这 3 个额外的数字来防止版本号冲突。我认为在同一迁移中执行所有操作会更好。
我希望这可以帮助您解决问题!
更新
也许我把事情复杂化了。如果您不介意实际回滚所有迁移然后再次向上迁移它们,则无需对任何文件进行任何注释(尽管“幽灵迁移”技巧仍然是必要的)。我只是觉得这样会更安全。
关于ruby-on-rails-3.2 - rake 数据库 :rollback reverting the wrong migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14711908/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!