Импорт старой базы данных в последнюю версию

Спасибо за ваш ответ, но простое удаление опросов не решает проблему дублирующихся записей. Я предполагаю, что где-то на раннем этапе импорт из phpBB3 был выполнен некорректно, что привело к созданию этих записей. Они валидны, но имеют дублирующиеся UUID, поскольку исходный импорт не проверял их наличие.

В любом случае, решение для тех, кто столкнётся с этой проблемой, заключается в следующем:

  1. Измените проблемные записи в таблице post_custom_fields, чтобы временно убрать их с пути. Лучше сделать это таким образом, чем ждать несколько минут перестройки, только чтобы увидеть новую ошибку.

update post_custom_fields set name = 'polls' where name = 'polls_bak';
update post_custom_fields set name = 'polls-votes' where name = 'polls-votes_bak';

  1. Запустите приложение перестройки, обновление или любое другое действие, которое пытается выполнить пользователь.

  2. Подключитесь к работающему контейнеру после завершения сборки и запуска.

  3. Верните названия опросов к исходным:

update post_custom_fields set name = 'polls_bak' where name = 'polls';
update post_custom_fields set name = 'polls-votes_bak' where name = 'polls-votes';

  1. Запустите миграцию, вызывающую проблему, вручную внутри контейнера приложения. Обратите внимание, что VERSION — это номер в имени файла миграции.

Сначала отмените миграцию; это ничего не сделает, так как метод down не влияет на базу данных:

rake db:migrate:down VERSION=20180820080623

Запустите миграцию и найдите первую ошибку:

rake db:migrate:up VERSION=20180820080623

  1. Найдите запись в таблице с помощью любого графического интерфейса базы данных для удобства редактирования по UUID, вызывающему проблему:

select * from post_custom_fields where value like '%your_UUID%';

  1. Теперь самая сложная часть. UUID является идентификатором ответа/варианта опроса, поэтому вам нужно изменить этот UUID в строке poll, например, с 731ef6901e968fc3f4e785fcb9e9abe8 на 731ef6901e968fc3f4e785fcb9e9abe9. Крайне маловероятно, что вы найдёте такой же UUID в вашей системе. Однако после этого вам также нужно найти соответствующую запись в poll-votes и изменить её на новый UUID. Таким образом, вы не потеряете ни один голос или ответ.

  2. Снова запустите миграцию и найдите следующую ошибку:

rake db:migrate:up VERSION=20180820080623

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

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

Проблема решена, так что всё отлично.

Спасибо!