После обновления Postgres и Rails я не могу вернуть свои миграции в нужное русло - PullRequest
1 голос
/ 29 января 2012

У меня была рабочая установка с использованием Rails 3.1 и Postgres 9.0, и я только что обновил Rails до 3.2.1 и Postgres 9.1.2.

Обновление postgres означало перенос данных, так как хранилища данных двух версий несовместимы.Я не особо заботился о переносе данных в мои локальные базы данных, так как они все равно используются в целях разработки.Поэтому я пытаюсь воссоздать свои базы данных, используя миграцию Rails (или w / schema).Однако независимо от того, что я пытаюсь, я не могу запустить миграцию.

Используя

rake db:migrate

или

rake db:reset

Запуск этого с моим Postgres 9.1.2Программа установки дает мне:

spif: > rake db:migrate
rake aborted!
PG::Error: ERROR:  relation "users" does not exist
LINE 4:              WHERE a.attrelid = '"users"'::regclass
                                        ^
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
               FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"users"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

Сначала я подумал, что гем pg не поддерживает Rails 3.2.1, но поэтому попробовал и с sqlite3, но это дает мне тех же пользователей, которых не нашел:

spif: > rake db:reset
rake aborted!
Could not find table 'users'

Похоже, что Rails ожидает где-то таблицу пользователей.

  1. Понятия не имею, как узнать, какой код на самом деле вызывает это.Когда я запускаю команды миграции с --trace, это показывает, что это делает внутреннее устройство ActiveRecord.Может ли это быть ошибкой в ​​ActiveRecord 3.2.1 (как мне узнать об этом?).

  2. Я могу подключиться к pg db'у нормально, используя psql и мои настройки пользователя в конфигурации/database.yml.Ожидает ли rails некоторых таблиц postgres, которые он может запрашивать о пользователях?

  3. Я полностью удалил каталог db / migrate и db / schema.rb, чтобы убедиться, что там нет некоторыхстранная внутренняя зависимость, но тоже безрезультатно.

Я уверен, что мне не хватает какой-то простой концепции - я не часто пытался сбросить свою базу данных с нуля, поэтому я надеюсь, что тамЭто простое объяснение.

Спасибо, помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 30 января 2012

Я решил это , вручную создав таблицу пользователей и таблицу друг друга , которая была у меня в этом проекте.Затем снова запустили миграцию и все в порядке.Там было всего несколько таблиц, так что это не было слишком громоздко, но это не то исправление, которое я пытался найти.он загружает себя при загрузке окружения во время любой операции с БД (или сервера / консоли rails тоже в этом отношении).

Спасибо за указатели mu.

0 голосов
/ 12 января 2013

Используете ли вы какую-либо модель загрузки в инициализаторах? У меня была та же проблема, и я загружал модель в инициализатор, поэтому возникает ошибка, потому что таблица не существует до выполнения миграции, и я пытался загрузить то, что никогда не существует!

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