Ошибка импорта vBulletin 5 (недопустимый символ в поле веб-сайта) и быстрый вопрос о вложениях

Привет, ребята!

После импорта моего первого старого форума из phpBB три года назад я рад, что мотивировал администратора международного сообщества перенести ещё один, более крупный форум (180 000 участников, 1,6 млн сообщений) на Discourse. :tada:

Этот форум использует vBulletin5.

Импорт шёл хорошо до пользователя номер 71712, причина — недопустимые символы в поле веб-сайта:

:website=>"http://url-redacted.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí",

Две возникшие сообщения об ошибке:

1: from /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:73:in `parse' /usr/local/rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/uri/rfc3986_parser.rb:21:in `split': URI must be ascii only "http://url-redacted.com - \u00E6\u00E5\u00F1\u00F2\u00EA\u00EE\u00E5 \u00EF\u00EE\u00F0\u00ED\u00EE \u00F1\u00EC\u00EE\u00F2\u00F0\u00E5\u00F2\u00FC \u00EE\u00ED\u00EB\u00E0\u00E9\u00ED" (URI::InvalidURIError)

и:

1: from /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2394:in `defer_validation' /usr/local/rvm/gems/ruby-2.6.5/gems/addressable-2.7.0/lib/addressable/uri.rb:2475:in `validate': Invalid character in host: 'url-redacted.com.com - æåñòêîå ïîðíî ñìîòðåòü îíëàéí' (Addressable::URI::InvalidURIError)

Если URL «должен состоять только из ASCII-символов», может быть, содержимое поля можно просто удалить или очистить вместо того, чтобы выбрасывать ошибку и останавливать скрипт? :thinking:
Попробую удалить этого пользователя из базы данных перед повторной попыткой импорта.

Кроме того, у меня есть ещё один вопрос. Аватары хранятся в базе данных и были успешно импортированы.

А что насчёт вложений? В моём случае они также хранятся в базе данных, как это принято по умолчанию в vBulletin. Будут ли они импортированы, или их нужно хранить как отдельные поля?

Привет, @Canapin

При миграции нашего старого форума vB3 у нас возникло множество ошибок в скрипте миграции из-за странной кракозябры или странных вложений, которые загрязняли базу данных за 15 лет публикаций.

Вот что я сделал — не очень элегантно, но это сработало для нас:

Когда мы сталкивались с такими ошибками, я просто редактировал скрипт миграции в месте возникновения ошибки и оборачивал проблемную строку в конструкцию:

begin
#здесь проблемная строка на Ruby
rescue
puts "вот интересная информация о проблеме"
end

Мой опыт миграции около 1 миллиона постов с vB3 в Discourse показал, что одним из моих лучших друзей была конструкция:

begin
rescue
end

Мы потеряли несколько некорректных постов, но для меня было приемлемо выбросить горстку постов из миллиона.

Надеюсь, это поможет.

Поскольку я не знаком с Rails, я просто заменил содержимое поля веб-сайта на пустую строку. В любом случае это был спам-аккаунт, и это единственная ошибка у почти половины уже обработанных пользователей.

Так что это не большая проблема, если в коде скрипта это не будет исправлено, хотя было бы неплохо, если бы это не блокировало импорт :wink:

Что касается вложений, я всё равно попробую импортировать сообщения и посмотрю, будут ли импортированы вложения (или появится ли какое-либо сообщение об ошибке), если я не получу эту информацию к тому времени.

Привет, @Canapin

Нам тоже пришлось написать некоторые обёртки на Ruby begin rescue end при импорте вложений из vB3 в Discourse; но в итоге мы успешно перенесли почти все вложения, аватары и изображения профилей.

Когда мы начинали, у меня не было опыта работы с Ruby и Rails; но теперь, благодаря Discourse, я стал большим поклонником Ruby и Rails и каждый день пишу немного кода на Rails.

По-моему, полезно немного разобраться в процессе миграции, если у вас есть интерес.