Модульные тесты Rails терпят неудачу из-за уникального ограничения на schema_migrations - PullRequest
0 голосов
/ 12 января 2009

Я пытаюсь запустить rake test:units, и я продолжаю получать это:

Mysql::Error: Duplicate entry '2147483647' for key 1: INSERT INTO `ts_schema_migrations` (version) VALUES ('20081008010000')

"ts_" есть, потому что у меня установлен ActiveRecord::Base.table_name_prefix. Я в замешательстве, потому что в таблице уже нет значения «20081008010000», и нет миграции со значением «2147483647» (хотя это значение действительно отображается в таблице).

В Rails 'schema_statments.rb есть следующее:

def initialize_schema_migrations_table
  sm_table = ActiveRecord::Migrator.schema_migrations_table_name

    unless tables.detect { |t| t == sm_table }
      create_table(sm_table, :id => false) do |schema_migrations_table|
        schema_migrations_table.column :version, :string, :null => false
      end
      ...

В моей базе данных для разработки ts_schema_migrations.version - это VARCHAR. В тесте, хотя это INTEGER. Я отбросил таблицы и перезапустил миграцию (и / или rake db:schema:load RAILS_ENV=test) несколько раз. Без изменений.

Что-то не так с моим адаптером MySQL?

Ответы [ 2 ]

1 голос
/ 13 января 2009

Похоже, вы пропустили несколько шагов при обновлении с Rails 1.x до 2.0.

Прочтите заметки по обновлению:

http://www.slashdotdash.net/2007/12/03/rails-2-upgrade-notes/

И примечания к выпуску:

http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done

Они скажут вам все шаги, которые вы должны выполнить. Особенно регенерация всех сценариев и миграция вашей базы данных в новую систему миграции баз данных по метке времени вместо увеличения идентификатора миграции

1 голос
/ 12 января 2009

Похоже, что ваша тестовая схема как-то Rails 1.x, тогда как разработка - Rails 2. Возможно, вы можете настроить RAILS_ENV для тестирования и запуска rake db:reset

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