Rails 2.3应用程序在运行数据库迁移时出现问题

时间:2019-04-01 00:09:53

标签: ruby-on-rails database

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

  

PG ::错误:错误:关系“ schema_migrations”已经存在:   创建表“ schema_migrations”(“版本”字符变化(255)不   NULL)

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

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

但是我不明白为什么这会导致错误。我尚未进行任何更改,无法解决此问题。任何帮助表示赞赏。

我曾尝试删除数据库并重建它,但是当它们存在关系和schema.rb文件为空白时,我收到有关不存在关系的错误。就像它不知道数据库中有表一样。

2 个答案:

答案 0 :(得分:4)

根据https://gist.github.com/TylerRick/9811465https://www.redmine.org/boards/2/topics/6051schema_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_path的更多信息:https://til.hashrocket.com/posts/5aa2892b43-set-schema-search-path

答案 1 :(得分:0)

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