我有一个旧的旧版应用程序,需要向其中添加一些新表。我最近运行rake db:migrate进行更改,并出现以下错误:
PG ::错误:错误:关系“ schema_migrations”已经存在: 创建表“ schema_migrations”(“版本”字符变化(255)不 NULL)
我在schema.rb文件中查找“版本”字符并找到了它:
ActiveRecord::Schema.define(:version => 20170415055458) do .. end
但是我不明白为什么这会导致错误。我尚未进行任何更改,无法解决此问题。任何帮助表示赞赏。
我曾尝试删除数据库并重建它,但是当它们存在关系和schema.rb文件为空白时,我收到有关不存在关系的错误。就像它不知道数据库中有表一样。
答案 0 :(得分:4)
根据https://gist.github.com/TylerRick/9811465和https://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_path
的更多信息:https://til.hashrocket.com/posts/5aa2892b43-set-schema-search-path
答案 1 :(得分:0)
您不能也不需要创建表schema_migrations。 Rails自动创建此表以保留迁移版本。请检查您的迁移文件并删除命令以创建schema_migrations表。