Я переношу приложение rails на новый сервер и столкнулся с ошибками, не позволяющими передавать некоторые данные между приложениями с идентичной схемой БД.
Если я запускаю rake db: version на обоих серверах, я получаю одинаковый результат. На моем новом сервере:
RAILS_ENV=production rake db:version # Returns 20181207224901
На моем старом сервере:
heroku run rake db:version # Returns 20181207224901
Я получил данные со старого сервера с помощью следующей команды:
pg_dump --host=OMITTED_HERE_FOR_PRIVACY_SAKE --port=5432 --username=OMITTED_HERE_FOR_PRIVACY_SAKE --password --dbname=da466m517q6qf6 -t product_order_rows > pox4_product_order_rows.pg
Я знаю, что это правильный сервер, и проверил содержимое файла pg, чтобы убедиться, что он дал мне то, что я хотел, что я опущу в этом посте, поскольку в нем слишком много строк.
Затем я пытаюсь поместить дамп в мою новую базу данных следующим образом:
sudo psql -U pox4 pox4_production < pox4_product_order_rows.pg
И я получаю следующие ошибки:
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
SET
ERROR: relation "product_order_rows" already exists
ERROR: role "wsgdzocxqkyzmj" does not exist
ERROR: relation "product_order_rows_id_seq" already exists
ERROR: role "wsgdzocxqkyzmj" does not exist
ALTER SEQUENCE
ALTER TABLE
ERROR: insert or update on table "product_order_rows" violates foreign key constraint "fk_rails_7fc701b8a5"
DETAIL: Key (model_id)=(17176) is not present in table "models".
setval
--------
5021
(1 row)
ERROR: multiple primary keys for table "product_order_rows" are not allowed
ERROR: relation "index_product_order_rows_on_model_id" already exists
ERROR: relation "index_product_order_rows_on_product_order_id" already exists
ERROR: constraint "fk_rails_7fc701b8a5" for relation "product_order_rows" already exists
ERROR: constraint "fk_rails_d38880b40c" for relation "product_order_rows" already exists
Проверяя приложение, в котором должны быть размещены данные, я не вижу ни одной из данных, по которым предполагается передавать данные. Я получил некоторые из этих ошибок при других передачах таблиц, и данные каким-то образом внесли это. Что я не понимаю, так это то, как данные вообще могут быть в первой базе данных, если они имеют одинаковую схему, или почему он будет отклонен в идентичной базе данных.