У меня есть пользовательская задача rake, которая создает базу данных разработки с данными для различной ситуации. Ядро выглядит следующим образом:Пользовательская задача rake для DB: Таблица не найдена
namespace :db do
task setup_seed: :environment do
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:schema:load'].invoke
Rake::Task['db:migrate'].invoke
Rake::Task['db:test:prepare'].invoke
Rake::Task['db:seed'].invoke
end
end
Все работает отлично, пока db:seed
не вызывается, потому что он выдает ошибку, что таблицы не существует. Это мой seed.rb
:
puts Rails.env
# => development
puts Article.count
# rake aborted!
# Mysql2::Error: Table 'app_test.articles' doesn't exist: SHOW FULL FIELDS FROM `articles`
# /usr/src/app/db/seeds.rb:2:in `<top (required)>'
# /usr/src/app/Rakefile:16:in `block (2 levels) in <top (required)>'
# Tasks: TOP => db:seed
я заметил две странные вещи здесь:
- Прежде всего, это не найти таблицу
articles
(или любой другой таблицы). Когда я остановить в самом начале моего файла семян и посмотреть в БД (развитие), таблицы присутствуют, но тест БД пуст - Я напечатал
Rails.env
и возвращаетdevelopment
. Однако сообщение об ошибке указывает, что он пытается загрузить БДapp_test.articles
, а неapp_development.articles
.
Поэтому я думаю, что эти два вопроса связаны.
Вы должны опустить 'дб: migrate' задачу, поскольку схема уже загружена. Также добавьте свою текущую версию Rails, 'db: test: prepare' теперь устарела. –
Рельсы версии 3.2.9. Когда я удаляю задачу 'db: migrate', возникает одна и та же ошибка – 23tux