我感觉到你的痛苦,因为我时不时地从 Sequel 收到类似的错误消息。
Sequel 在您的应用程序数据库中创建一个名为的表schema_info来跟踪您运行的迁移。
create_table(:schema_info) do
column :version, "int(11)", :default=>0, :null=>false
end
使用时间戳或整数版本。
您的错误消息可能是由于 Sequel 未创建该表,或者因为您从头开始重新创建应用程序数据库,在这种情况下,架构版本已丢失,从而创建了您的错误消息。
鉴于您提供的信息,无法说出究竟发生了什么。
我偶尔会遇到类似的错误,我将迁移文件中的所有迁移代码注释掉,运行迁移,然后再次取消注释代码。
如果您确定您已经运行了某个迁移,您可以更改表中version字段的值schema_info。
假设您有以下迁移:
001_some_migration.rb
002_some_other_migration.rb
...并且您已经运行 001,并且您收到“已经存在”错误,然后您可以设置schema_info. version= 1 并再次运行您的迁移。迁移#1 不会执行,但会直接执行#2。