миграционные файлы и схемы - PullRequest
0 голосов
/ 21 марта 2011

Итак, мой Mac вышел из строя и теперь пытается построить мой проект на моем новом Mac. Мне нужно знать при запуске rake db:migrate он смотрит на файл schema.rb?

Как я получаю

Mysql::Error: Table 'myproject_development.users' doesn't exist: SHOW FIELDS FROM `users`

Даже когда я запускаю rake db:migrate:up VERSION=001, который не имеет отношения к пользователям, я получаю ту же ошибку?

Если это имеет значение, мои миграции начинаются как

001_...
002_...
003_...
20100222171241_...

1 Ответ

3 голосов
/ 21 марта 2011

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

После создания резервной копии вы можете начать устранение неполадок. У вас есть миграция, которая создает таблицу пользователей? Если нет, куда это делось? Если у вас есть, почему он не работает?

К вашему сведению Миграции, начинающиеся с цифр (например, 001), являются более ранними версиями миграций. Где-то около 2.2 или 2.3 названия миграций были изменены на даты, что вы видите в более поздних миграциях.

Может быть проблема с тем, как названы эти первые несколько миграций, и они не найдены (я не могу вспомнить историю миграции, когда эта схема именования переключилась). И, возможно, в то время он по-другому отслеживал миграцию, поэтому могут возникнуть некоторые проблемы, чтобы заставить его работать с более современной схемой. Вы можете довольно безопасно переименовать их, следуя новой схеме, используя метку даты файла.

Надеюсь, это поможет.

...