Я застрял, пытаясь исправить эту ошибку БД в течение большей части недели.Любая помощь приветствуется;ищу какое-либо решение, независимо от того, насколько оно радикально.
Проблема возникла из-за отсутствия файла миграции для таблицы, «запасов» в моей схеме.Я создал таблицу "stocks" в другой ветви функций, и по какой-то причине этот файл миграции не вернулся в основную ветку после слияния.Таким образом, не было никакого файла миграции create_stocks, но было несколько файлов миграции add_column_to_stocks.
Итак, я попытался изменить порядок файлов миграции, но это не сработало, поэтому я очистил файлы миграции и запустил rake db: migrate: reset, так что все нормально на моей производственной стороне.Если я запускаю rake db: migrate на моей производственной стороне, я не получаю никаких ошибок, но когда я пытаюсь отправить это на heroku, я получаю странное сообщение.Кажется, по-прежнему требуется перенести файл миграции, который больше не существует.
Вот полное сообщение:
Called from /app/vendor/bundle/ruby/2.3.0/gems/activesupport-
4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
ActiveRecord::SchemaMigration Load (1.6ms) SELECT "schema_migrations".*
FROM "schema_migrations"
Migrating to AddLatestPriceToStocks (20180515064500)
(1.1ms) BEGIN
== 20180515064500 AddLatestPriceToStocks: migrating
===========================
-- add_column(:stocks, :latest_price, :decimal)
(1.9ms) ALTER TABLE "stocks" ADD "latest_price" decimal
(1.1ms) ROLLBACK
rake aborted!
StandardError: An error has occurred, this and all later migrations
canceled:
PG::UndefinedTable: ERROR: relation "stocks" does not exist
: ALTER TABLE "stocks" ADD "latest_price" decimal
Вот мои файлы миграции;обратите внимание, что файл миграции 20180515064500 больше не существует, поэтому я понятия не имею, почему он все еще пытается перенести это в heroku.
up 20171231042756 Create articles
up 20171231044214 Add description to articles
up 20180116183526 Create users
up 20180116191414 Add user to articles
up 20180116195212 Add password digest to users
up 20180305082108 Create categories
up 20180305090315 Create article categories
up 20180521021514 Create user stocks
up 20180530032220 Create stocks
Вот моя локальная производственная схема:
create_table "article_categories", force: :cascade do |t|
t.integer "article_id"
t.integer "category_id"
end
create_table "articles", force: :cascade do |t|
t.string "title"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "stocks", force: :cascade do |t|
t.decimal "latest_price"
t.string "company_name"
t.datetime "latest_time"
t.integer "latest_update"
end
create_table "user_stocks", force: :cascade do |t|
t.integer "user_id"
t.integer "stock_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "user_stocks", ["stock_id"], name: "index_user_stocks_on_stock_id"
add_index "user_stocks", ["user_id"], name: "index_user_stocks_on_user_id"
create_table "users", force: :cascade do |t|
t.string "username"
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
t.string "password_digest"
end
А вот моя схема Heroku:
create_table "article_categories", force: :cascade do |t|
t.integer "article_id"
t.integer "category_id"
end
create_table "articles", force: :cascade do |t|
t.string "title"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "users", force: :cascade do |t|
t.string "username"
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
t.string "password_digest"
end
end
Не уверен, что я усугубил проблему.Я ищу любое решение на данный момент, независимо от того, насколько решительным.Любая помощь ценится и, надеюсь, этого достаточно информации.