Rails 2.3 Проблемы с приложением при запуске миграции базы данных - PullRequest
5 голосов
/ 01 апреля 2019

У меня есть старое устаревшее приложение, в которое мне нужно добавить несколько новых таблиц.Я недавно запустил rake db: migrate для внесения изменений и выдал следующую ошибку:

PG :: Ошибка: ОШИБКА: отношение "schema_migrations" уже существует: CREATE TABLE "schema_migrations" (символ "version"меняющийся (255) NOT NULL)

Я посмотрел в своем файле schema.rb и нашел символ "версия" и нашел его:

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

но я непонять, почему это вызывает ошибку.Я не внес никаких изменений и не могу понять это.Любая помощь приветствуется.

Я пытался удалить базу данных и перестроить ее, но я получаю ошибки об отношениях, которых не существует, когда они существуют, и файл schema.rb пуст.Как будто он не знает, что в базе данных есть таблицы.

Ответы [ 2 ]

4 голосов
/ 11 апреля 2019

Согласно 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

0 голосов
/ 01 апреля 2019

Нельзя и не нужно создавать таблицу schema_migrations. Rails автоматически создает эту таблицу для сохранения версии миграции. Пожалуйста, проверьте файлы миграции и удалите команду для создания таблицы schema_migrations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...