Weiß zufällig jemand wie man beim Datentransfer zwischen zwei Servern am besten mit Umlauten umgeht?
Wir haben gerade einen Shop bei dem viele Bilder ein „ü“ (…blüte.jpg) haben.
Egal ob ich die Daten per SSH rsync oder scp verschicke, zippe und dann auf dem Zielserver entzippe,…die Dateien werden immer umbenannt…nur wenn ich die Dateien „einzeln“ über FileZilla hochlade, klappt es - aber das ist bei mehr als 500 Bildern in diversen Ordnern etwas „aufwendig“.
Jemand eine Idee oder Anleitung wie das mit den Datenübertragungen am besten abläuft?
Das liegt in der Regel daran, dass beide Server unterschiedliche Zeichensätze haben, du kannst dir mal den Paramenter -iconv von rsync anschauen, damit kannst du vorher definieren von welchem Zeichensatz zu welchem Zeichensatz konvertiert werden soll.
Jetzt weiß ich schon mal das der Quellserver ANSI_X3.4-1968 und der Zielserver UTF-8 benutzen.
Dann muss ich mir nur noch ein wenig Wissen über das -iconv aneignen ^^
Soweit ich es verstehe müsste es wie folgt aussehen:
rsync -av --iconv=ANSI_X3.4-1968,utf-8 Quelle Ziel
Kann das jemand bestätigen oder korrigieren? Wäre echt nett
@Max_Shop leider kommt sowas hin und wieder mal vor. ^^ Kannst du mir das mit dem Bash Script erkäutern? Ich würde diese Dateien so oder so mal gerne umbenennen.
Häää? Was ist daran aufwendig, wenn man im FileZilla mehrere Dateien oder sogar Ordner markiert und hochlädt? 500 Bilder ist in sehr wenigen Minuten erledigt
Keine Ahnung, ich stelle mich gerade etwas blöd an. Die Bilder machen mir eigentlich weniger sorgen, das war mein erster Schritt auf der Suche nach einer Lösung. Ich habe gerade allgemein Probleme.
Das ist schon der 5te Shop den ich „umziehe“ und ich bekomme es einfach nicht hin.
Beim übertragen der Daten via SSH kommt folgende Fehlermeldung: rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1333) [sender=3.2.3]
Beim übertragen der Datenbank diese:
`ERROR 1452 (23000) at line 250154: Cannot add or update a child row: a foreign key constraint fails (`werbemittelshopsql1`.`#sql-alter-382-141d8`, CONSTRAINT `fk.document.order_id` FOREIGN KEY (`order_id`, `order_version_id`) REFERENCES `order` (`id`, `version_id`) ON UPDATE CASCADE)`
Beim Plugin Tools wird mir noch folgendes angezeigt:
Cannot check security.json from shopware-static-data (not accessible)
Security Updates (releases.json not accessible)
Und der Reiter Cache bei Tools lädt überhaupt nicht
Mein Gefühl sagt mir: Entweder der Shop oder Quellserver haben einen schaden lol
Ich war gerade etwas faul und habe ChatGPT benutzt. Aber du solltest mit dem Code zumindest das Prinzip verstehen:
#!/bin/bash
# Function to slugify a string
slugify() {
echo "$1" | iconv -f utf-8 -t ascii//TRANSLIT | sed -E 's/[^a-zA-Z0-9]+/-/g' | sed -E 's/^-+|-+$//g' | tr A-Z a-z
}
# Function to process files in the directory
process_files() {
local dir="$1"
local files=$(find "$dir" -type f -iregex '.*\.\(jpg\|jpeg\|png\|gif\|bmp\|svg\|tif\|tiff\|ico\)')
for file in $files; do
filename=$(basename "$file")
dirpath=$(dirname "$file")
new_filename=$(slugify "$filename")
# Check if filename needs to be changed
if [[ "$filename" != "$new_filename" ]]; then
mv "$dirpath/$filename" "$dirpath/$new_filename"
echo "Renamed: $filename -> $new_filename"
fi
done
}
# Main script
read -p "Enter directory path: " path
if [ ! -d "$path" ]; then
echo "Error: Directory not found."
exit 1
fi
process_files "$path"
echo "Finished processing."
Anstatt die Bilder direkt umzubenennen, den Part mit einem Shopware API-Request ersetzt, damit Shopware die Bilder selbst umbenennt und das auch in der Datenbank ändert.
Mir ist heute eingefallen & aufgefallen das die Fehlermeldung hier ja noch vorhanden ist. Die Kopie lief jetzt ohne Probleme, aber beim erneuten Kopieren der Datenbank (Backup) ist diese Fehlermeldung nochmal aufgetaucht.
ERROR 1452 (23000) at line 257229: Cannot add or update a child row: a foreign key constraint fails (werbemittelshopsql1.#sql -alter-3f1-4c2e2, CONSTRAINT fk.document.order_id FOREIGN KEY (order_id, order_version_id) REFERENCES order ( id, version_id) ON UPDATE CASCADE)
Soweit ich es verstehe verweisen Einträge der Tabelle „document“ auf Einträge in der Tabelle „order“ die nicht vorhanden sind?
Mit der folgenden SQL-Abfrage konnte ich 21 Einträge finden bei denen die Verknüpfung anscheinend nichts in order findet.
SELECT DISTINCT `order_id`, `order_version_id`
FROM `document`
WHERE (`order_id`, `order_version_id`) NOT IN (
SELECT `id`, `version_id`
FROM `order`
);
Ist das alles was die Fehlermeldung sagt?
Kann man davon ausgehen das dieser Fehler durch das Löschen von Bestellungen kommt?
Da bisher „keine sonstigen Probleme“ auftreten, muss man sich dann weiter damit beschäftigen?
Macht es Sinn diese Einträge in document zu entfernen?