【问题标题】:Rails 2.3 App problems running database migrationRails 2.3 运行数据库迁移的应用程序问题
【发布时间】:2019-04-01 00:09:53
【问题描述】:

我有一个旧的旧应用程序,我需要添加一些新表。我最近运行 rake db:migrate 进行更改并出现以下错误:

PG::Error: ERROR: 关系“schema_migrations”已经存在: 创建表“schema_migrations”(“版本”字符变化(255)不是 空)

我查看了我的 schema.rb 文件并找到了“版本”字符并找到了它:

ActiveRecord::Schema.define(:version => 20170415055458) do .. end

但我不明白为什么这会导致错误。我没有做任何改变,也无法弄清楚。任何帮助表示赞赏。

我已尝试删除数据库并重新构建它,但我收到有关关系不存在的错误,并且 schema.rb 文件为空白。就好像它不知道数据库中有表一样。

【问题讨论】:

  • 使用rake db:drop db:create db:migrate评论
  • 嗨,我会丢失数据库中的所有数据
  • 获取种子转储并重置您的数据库

标签: ruby-on-rails database


【解决方案1】:

根据https://gist.github.com/TylerRick/9811465https://www.redmine.org/boards/2/topics/6051,可能schema_migrations 表是公共postgresql 模式的一部分,而database.yml 没有指定它。看看你是否已经有了 schema_search_path 的值,以及添加 public 是否有帮助。

development:
  adapter: postgresql
  database: project_development
  schema_search_path: public

  schema_search_path: "existing,public"

更多关于schema_search_pathhttps://til.hashrocket.com/posts/5aa2892b43-set-schema-search-path

【讨论】:

  • 我会试试然后回复你
  • 这适用于我的本地开发数据库,​​但由于某种原因不适用于我在 heroku 上的生产。任何想法
  • 太好了,你到底做了什么?你需要为production:做同样的事情
  • 我做到了,我在 db.yml 中添加了同一行,但由于某种原因,当我执行 rake db:migrate 时,我在尝试创建 schema_migrations 表时遇到了同样的错误。基本上,当它试图查看数据库以查找表时,由于某种原因它找不到表。
  • 我接受了这个答案,因为它解决了我在本地机器上的问题。我已经询问 Heroku 支持以找出为什么它在他们的系统上不起作用。再次感谢 Stéphane。
【解决方案2】:

您不能也不需要创建表 schema_migrations。 Rails 自动创建此表以保留迁移版本。请检查您的迁移文件并删除命令以创建 schema_migrations 表。

【讨论】:

  • 我不想重新创建 schema_migrations 表。我只是在尝试运行迁移以向其中一个表添加一列。当我这样做时会产生这个错误。
猜你喜欢
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 2020-09-25
  • 2014-12-22
相关资源
最近更新 更多