OS: Ubuntu 14.04
Rails: 3.2.18
Ruby: 2.15
我继承了Rails应用程序,我遇到了一些迁移问题。
当我尝试运行最新的迁移时,收到以下错误消息:
== CreateBillingComments: migrating ==========================================
-- create_table(:billing_comments, {:id=>false})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'billing_comments' already exists:
CREATE TABLE `billing_comments`
表billing_comments确实存在,但问题是我找不到任何源代码文件中的字符串billing_comments(包括迁移文件,视图,控制器,模型等)。
该表未被使用,因此我想删除它,并在代码中对它进行所有引用。我担心的是,如果我只是删除表格,我只会部分地解决问题。
我也寻找CreateBillingComments,但没有用。
运行rake db:schema:dump生成了一个新的schema.rb,其中包含以下内容:
create_table "billing_comments", :force => true do |t|
t.string "ticket_id"
t.text "content"
t.string "user_id"
t.string "slug"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
但这是现在出现billing_comments的唯一地方。
这些信息来自哪里?
答案 0 :(得分:2)
在数据库历史记录的某个时刻,通过Rails迁移或其他方式创建了billing_comments
表。您可以简单地为迁移添加一个保护,以防止重新创建表(如果已存在):
unless table_exists? :billing_comments
create_table(:billing_comments, {:id=>false})
end
请注意,如果id
列中已存在billing_comments
列,您可能仍需要将其删除。