Что случилось с моими первичными ключами? - PullRequest
2 голосов
/ 15 сентября 2009

Я использую рельсы 2.3.4

Когда я выполняю rake db: test: prepare, поле id создается не первичным ключом и автоматически увеличивается.

Когда я смотрю на db разработки, нет проблем с первичными ключами.

Использование MySQL.

Редактировать: похоже, что мой файл schema.rb был изменен: id => false должно быть true. Что генерирует этот файл? Миграции БД?

[EDIT] Какова действительная механика для создания файла schema.rb?

Ответы [ 3 ]

1 голос
/ 03 ноября 2009

При выполнении граблей задачи выполняются в среде по умолчанию, если среда не указана.

Возможно, у вас разные версии схемы между вашей базой данных тестирования и разработки.

rake db:reset #drops and created the database for current environment
rake db:reset:all #drops and creates database for all environments
rake db:migrate #migrates the schema for the current environment
rake db:migrate RAILS_ENV=test #migrates the schema for the test environment

Если я не ошибаюсь (как я сейчас помню)

rake db:migrate #applies the migrations and dumps the schema to db/schema.rb file
rake db:schema:dump #dumps the actual state of your current environment schema into db/schema.rb file
1 голос
/ 03 ноября 2009

Если вы используете 'reset', то 'db: test: prepare' вы, скорее всего, получите результат, который вы искали раньше. Вот так:

rake db:reset
rake db:test:prepare

Это будет:

  • воссоздать базу данных dev на основе ваших последних миграций
  • воссоздать файл schema.rb на основе базы данных migrations / dev
  • воссоздать тестовую базу данных на основе файла schema.rb.
1 голос
/ 16 сентября 2009

Эй, я посмотрел этот вопрос вчера и вижу, что никто еще не ответил, поэтому я постараюсь помочь, если честно, я не знаю точно, почему это происходит в основном, потому что я на самом деле не использовал задание «подготовить» , При выполнении миграций для пустой базы данных создается файл schema.rb.

Обычно я запускаю db: test: clone всякий раз, когда в эту схему вносятся изменения, это гарантирует, что ваша тестовая база данных всегда соответствует вашей текущей среде. Возможно, попытайтесь сбросить БД и воссоздать ее из ваших миграций, затем запустите клон. После этого схема все еще показывает: id => false? Если это так, вы можете опубликовать свою миграцию, которая создает соответствующую таблицу.

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