vBulletin 5 Importfehler (ungültiges Zeichen im Website-Feld) und eine kurze Frage zu Anhängen

Hallo zusammen!

Nachdem ich vor drei Jahren mein erstes altes Forum von phpBB importiert habe, freue ich mich sehr, dass ich einen Admin eines internationalen Community-Forums dazu motivieren konnte, ein weiteres, größeres Forum (180.000 Mitglieder, 1,6 Millionen Nachrichten) zu Discourse zu migrieren. :tada:

Dieses Forum nutzt vBulletin5.

Der Import funktionierte gut, bis Benutzer Nr. 71712 erreicht wurde. Der Grund waren ungültige Zeichen im Website-Feld:

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

Die beiden daraus resultierenden Fehlermeldungen:

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)

und:

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)

Wenn die URL „nur ASCII-Zeichen enthalten darf", könnte der Inhalt des Feldes dann nicht einfach entfernt oder bereinigt werden, anstatt einen Fehler auszulösen und das Skript abzubrechen? :thinking:
Ich werde versuchen, diesen Benutzer aus der Datenbank zu entfernen, bevor ich den Import erneut versuche.

Außerdem habe ich noch eine weitere Frage. Die Avatare werden in der Datenbank gespeichert und wurden erfolgreich importiert.

Aber was ist mit den Anhängen? In meinem Fall sind diese ebenfalls in der Datenbank gespeichert, was bei vBulletin standardmäßig der Fall ist. Werden sie importiert, oder müssen sie als separate Felder gespeichert werden?

Hey @Canapin

Als wir unser altes vB3-Forum migriert haben, traten in dem Migrations-Skript viele Fehler auf, verursacht durch seltsame Mojibake-Zeichen oder merkwürdige Anhänge, die die Datenbank durch 15 Jahre Posts verunreinigt hatten.

Was ich getan habe – nicht sehr elegant, aber es hat bei uns funktioniert:

Wenn wir auf solche Fehler stießen, habe ich einfach das Migrations-Skript an der Stelle bearbeitet, wo der Fehler auftrat, und die betroffene Zeile mit folgendem Block umhüllt:

begin
#betroffene Ruby-Zeile hier
rescue
puts "Hier sind einige interessante Informationen zum Fehler"
end

Meine Erfahrung bei der Migration von etwa einer Million vB3-Posts zu Discourse war, dass einer meiner besten Freunde folgendes war:

begin
rescue
end

Wir haben ein paar fehlerhafte Posts verloren, aber das war für mich in Ordnung, ein paar Posts von einer Million zu opfern.

Hoffe, das hilft.

Da ich Rails nicht kenne, habe ich den Inhalt des Felds ‘Website’ einfach durch einen leeren String ersetzt. Es handelte sich ohnehin um ein Spam-Konto, und es ist der einzige Fehler bei fast der Hälfte der bereits verarbeiteten Benutzer.

Also ist es kein großes Problem, wenn es im Skript-Code nicht behoben wird, obwohl es schön wäre, wenn es den Import nicht blockieren würde :wink:

Was die Anhänge betrifft, werde ich trotzdem versuchen, die Nachrichten zu importieren und schauen, ob die Anhänge importiert werden oder ob eine Art Fehlermeldung erscheint, falls ich in der Zwischenzeit keine Informationen dazu erhalte.

Hallo @Canapin,

Wir mussten ebenfalls einige Ruby-Wrapper mit begin rescue end schreiben, als wir unsere vB3-Anhänge nach Discourse importiert haben. Am Ende konnten wir jedoch fast alle Anhänge, Avatare und Profilbilder migrieren.

Als wir begannen, hatte ich keine Erfahrung mit Ruby und Rails; aber dank Discourse bin ich mittlerweile ein großer Fan von Ruby und Rails und schreibe heute jeden Tag etwas Rails-Code.

Ich finde, es ist gut, sich beim Migrieren ein wenig einzulesen, wenn man das Interesse dazu hat.