Entschuldigung, dass ich mich wieder melde. Ich habe Schwierigkeiten herauszufinden, warum keine Permalinks erstellt werden. ![]()
Zur Erinnerung:
Ich verwende die standardmäßigen „hässlichen
Entschuldigung, dass ich mich wieder melde. Ich habe Schwierigkeiten herauszufinden, warum keine Permalinks erstellt werden. ![]()
Zur Erinnerung:
Ich verwende die standardmäßigen „hässlichen
Es scheint, als ob diese Funktion für sprechende URLs gedacht ist? Du müsstest sie also entsprechend anpassen (es sei denn, ich habe etwas im Code übersehen).
Ich bin etwas verwirrt, denn Marco hat keine Pretty URLs verwendet, aber trotzdem wurden für ihn Permalinks erstellt, und er hat dasselbe Import-Skript benutzt.
Hier ist die Pretty-URL-Funktion im Import-Skript: discourse/script/import_scripts/smf2.rb at main · discourse/discourse · GitHub
Ich hoffe auf Hilfe, damit das auch für die standardmäßigen „hässlichen
Ich weiß es nicht. Aber meine beste kostenlose Antwort lautet: Ich denke, du solltest dir Zeile 222 ansehen, die besagt:
Permalink.find_or_create_by(url: "forums/index.php/board,#{c["id_board"]}.0.html", category_id: category.id)
Du würdest diesen Permalink (oder vielleicht ein paar andere?) in die hässlichen Formate ändern, die du suchst? Obwohl das für mich schon ziemlich hässlich aussieht. Vielleicht solltest du auch die permalink_normalizations am Anfang der Datei anpassen.
Entschuldigung, Jay, dass ich dir erneut antworte, aber wo genau ist Zeile 222? Zeile 222 in smf2.rb lautet lediglich:
if parent
Nun, dann schauen wir wohl unterschiedliche Versionen an. Ich bin mir nicht sicher, warum das so sein könnte. Aber worauf du achten solltest, sind diese Zeilen über Permalinks.
Ich bin verwirrt, denn die Version, auf die ich verlinkt habe, scheint die aktuellste „offizielle
Aha! Entschuldigung. Es sieht so aus, als hätte ich das smf1-Skript angeklickt. Schau dir also smf1.rb1 an, das direkt neben dem smf2.rb-Skript liegt, das du gerade betrachtest.
Du kannst entweder das smf1-Skript ansehen oder make_prettyurl_permalinks als Vorlage nutzen, um eine make_uglyurl_permalinks-Funktion zu erstellen. Da diese jedoch auf die Pretty-URL-Tabelle zugreift, wäre es vielleicht einfacher, smf1.rb als Vorlage zu verwenden. Dafür müsste ich mir jedoch die Datenbank ansehen, um sicherzugehen. Nein, das wird auch nicht viel helfen, es sei denn, du modifizierst die create_xxx-Funktionen.
Entschuldigung. Ich sehe keine Lösung, die sich hier erklären lässt.
Ich bin am Ende, komme aber nicht weiter. Ich habe sogar einen neuen Benutzer auf dem MySQL-Server mit einem nativen Passwort erstellt und es erneut versucht, jedoch ohne Erfolg.
su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
Lade bestehende Gruppen...
Lade bestehende Benutzer...
Lade bestehende Kategorien...
Lade bestehende Beiträge...
Lade bestehende Themen...
Traceback (most recent call last):
7: from script/import_scripts/smf2.rb:701:in `<main>'
6: from script/import_scripts/smf2.rb:28:in `run'
5: from script/import_scripts/smf2.rb:28:in `new'
4: from script/import_scripts/smf2.rb:62:in `initialize'
3: from script/import_scripts/smf2.rb:274:in `create_db_connection'
2: from script/import_scripts/smf2.rb:274:in `new'
1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': RSA-Verschlüsselung wird nicht unterstützt – das caching_sha2_password-Plugin wurde mit GnuTLS-Unterstützung erstellt (Mysql2::Error)
OK, nach VIELEN Stunden hin und her, um das zum Laufen zu bringen, habe ich das Problem identifiziert und poste es hier für alle anderen, die vielleicht genauso stecken bleiben wie ich.
Der MySQL-Docker-Container ist Version 8. Das bedeutet, dass aus irgendeinem Grund die MariaDB-Bibliothek, die die MySQL-Vorlage einbindet, nicht funktioniert.
Ich habe die MySQL-Vorlagendatei nicht in die Konfigurationsdatei des Import-Docker-Containers aufgenommen; das war die erste Änderung.
Ich habe den Import-Container erstellt und mit ./launcher enter import betreten.
Dann:
echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb
Dies zeigt eine interaktive Eingabeaufforderung an, bei der Sie die Standardeinstellungen wählen können (MySQL 8 mit Tools).
Anschließend habe ich die normale MySQL 8-Bibliothek installiert und den Build fortgesetzt:
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'
Sobald dies alles erledigt war, verlief der Rest wie üblich; der Import läuft nun.
Die Discourse-Entwickler sollten vielleicht die Importskripte anpassen, um diesem Problem Rechnung zu tragen. Zumindest ist es jetzt im Forum für andere sichtbar, falls sie wie ich stecken bleiben.
Soll ich gemäß dieser Anleitung löschen? how-to-migrate-import-from-smf2-to-discourse/90129#cleanup-5
Ich habe das Attachments-Verzeichnis von SMF2 manuell nach Discourse übertragen, bevor ich den Import gestartet habe, und den Importer einmal ausgeführt. Allerdings werden die Uploads in den Beiträgen in Discourse nicht angezeigt. Hast du eine Idee, warum das so ist?
Ich habe den Importer bereits einmal ohne aktiviertes S3 ausgeführt, möchte aber nun S3 nutzen. Was soll ich tun?
Ich habe den Importeur bereits einmal ohne S3 ausgeführt. Werden bei einem Delta-Import auch Uploads aus bereits importierten Themen zu S3 übertragen?
Es ist am besten, wenn du einfach von vorne beginnst und S3 vor dem Import aktivierst.
Beim Erstellen von Benutzern tritt dieser Fehler auf:
oxipng worker: oxipngnicht gefunden; bitte stellen Sie das korrekte Binärfile bereit oder deaktivieren Sie diesen Worker (Argument --no-oxipng oder:oxipng => false über die Optionen)
Danach beginnt die Erstellung von Beiträgen.
Update: Ich bin verwirrt, warum ich diesen oxipng-Fehler erhalte. Ich kann nirgendwo etwas dazu in Discourse finden, und dieses Problem tritt nur beim Ausführen des SMF2-Import-Skripts auf. Könnte es damit zusammenhängen? https://meta.discourse.org/t/faster-and-smaller-uploads-in-discourse-with-rust-webassembly-and-mozjpeg-blog
Das ist nur eine Warnung von der Bildoptimierungsbibliothek, die wir serverseitig verwenden, und sollte nichts blockieren.
Ich dachte zunächst, meine Import-Probleme könnten mit S3 zusammenhängen, aber S3 scheint einwandfrei zu funktionieren. Das Problem ist, dass nach dem Ausführen des Import-Skripts (mit aktiviertem S3) und dem Neuaufbau des Import-Containers alle Themen in Discourse die hochgeladenen Dateien fehlen, die in smf2-Themen als Anhänge vorhanden sind. Mit anderen Worten: Es gibt keinen visuellen Hinweis darauf, dass in einem Discourse-Thema überhaupt eine hochgeladene Datei existiert, obwohl diese im entsprechenden smf2-Thema eindeutig als Anhang zu sehen ist. Das Ergebnis ist dasselbe, wenn ich den Import mit deaktiviertem S3 durchführe. Ich habe hier ein wenig die Ideen verlaufen.
Habt ihr einen Gedanken dazu?
Es kann sein, dass die Bilder an den Beitrag angehängt sind, sodass das Importskript weiß, dass sie importiert werden sollen, aber im Beitragstext nicht referenziert sind und daher nicht angezeigt werden. Du musst den Beitragstext so ändern, dass er einen Link zu den Bildern enthält. Ich habe das schon einmal gesehen, meines Erachtens bei einem anderen Forum.
Meinst du, den Beitrag in smf2 so zu ändern, dass er Links zu den angehängten Dateien enthält, bevor er nach Discourse importiert wird?
Nun, das könnte ein Weg sein.
Aber ich meine, das Import-Skript so zu ändern, dass der Anhang an den rohen Beitrag angehängt wird. Etwas wie