【发布时间】:2014-04-17 13:55:57
【问题描述】:
我有一个新的 rails 应用程序,它将使用现有数据库(由另一个 ruby 应用程序创建)。 为此,我为已经存在的数据库表创建了一个模型,但现在 rails 给了我必须运行的错误消息
rake db:migration
但是如果我尝试这样做,我会收到一个错误,因为该表已经存在。
有没有办法执行迁移并忽略现有表?该表是正确的,应该在那里并且填充了来自另一个应用程序的数据。我想让这个应用程序使用这些信息。
谢谢
编辑: 数据库设置很好,因为我之前能够执行 db:migrations。我使用
创建了模型rails g model fundo
(fundo是模型名,fundoS是表名) 模型还没有属性,但是表有列
编辑 2: 如果我使用 --trace 运行,这些是输出
$ rake db:schema:dump --trace
** 调用 db:schema:dump (first_time)
** 调用环境(first_time)
** 执行环境
** 调用 db:load_config (first_time)
** 执行 db:load_config ** 执行 db:schema:dump
$ rake db:migrate --trace
** 调用 db:migrate (first_time)
** 调用环境(first_time)
** 执行环境
** 调用 db:load_config (first_time)
** 执行 db:load_config
** 执行 db:migrate == CreateFundos:迁移 ============================================== ======
-- create_table(:fundos) rake 中止!发生错误,此迁移和所有后续迁移已取消:PG::DuplicateTable: ERROR: relationship "fundos" 已经存在 CREATE TABLE "fundos" ("id" serial primary 键,“created_at”时间戳,“updated_at”时间戳)
似乎 rails 正在尝试重新创建表。但我只是想让它们同步,因为表已经在那里了!
【问题讨论】:
-
您能否确认您的数据库配置正确,并且您现有的表命名符合新创建模型的 Rails 标准?
-
@vee 更新了问题;)
标签: ruby-on-rails rake