Migrationsassistent bleibt hängen

Hallo zusammen,

ich habe zwei Shopware 6.7.7.1 shops.
Einer ist der Quellshop der andere Zielshop.
Ich möchte nun vom Quellshop meine Daten mit dem offiziellen Migrationsassistenten zum Zielshop übertragen. Wenn ich die Migration starte, tut sich aber nichts. Es bleibt bei 0 / 4340 stehen.
Woran könnte das liegen, hat das schonmal jemand erlebt?
Quellshop läuft nicht im Docker, Zielshop läuft mit Docker.

Danke vorab!

Cronjobs aktiviert?

Was sagt der Status der Migration in der Datenbank? (hier im Forum Suche nutzen).

1 „Gefällt mir“

die KI hat mir folgende Lösung vorgeschlagen, ich frage mich, ob das auf irgendetwas anderes Einfluss hat? Und wieso ich überhaupt so vorgehen muss?

KI hat folgendes vorgeschlagen (was geholfen hat)

force stop migration

docker exec shopware-database-1 mariadb -u shopware -psecure_shopware_password_here shopware -e "
UPDATE swag_migration_run
SET step = ‚aborted‘, updated_at = NOW(3)
WHERE step = ‚aborting‘;
SELECT ROW_COUNT() as rows_updated;" 2>&1

remove lock files:

docker exec shopware-web-1 rm -f /tmp/sf.message_queue_consume_async..lock /tmp/sf.message_queue_consume_low_priority.*.lock && echo „Lock files removed“

start cli worker

docker exec shopware-web-1 php bin/console messenger:consume async -vv --time-limit=3600

Danach kann ich die Migration starten und sie funktioniert….

Mein Projekt hab ich so erstellt:
sudo mkdir -p /opt/shopware && cd /opt/shopware
&& composer create-project shopware/production:^6.7.7.1 .
&& composer require shopware/docker

mit diesen Dateien:

compose.yml:

x-shopware-environment: &shopware
environment:
APP_ENV: prod
APP_SECRET: „${APP_SECRET}“
APP_URL: „${APP_URL:-http://localhost:8000}“
DATABASE_URL: „mysql://shopware:${MYSQL_PASSWORD:-shopware}@database/shopware“
DATABASE_HOST: „database“
JWT_PRIVATE_KEY: „${JWT_PRIVATE_KEY}“
JWT_PUBLIC_KEY: „${JWT_PUBLIC_KEY}“
# Optional: Redis for sessions (recommended for production)
# PHP_SESSION_HANDLER: redis
# PHP_SESSION_SAVE_PATH: „tcp://cache:6379/1“
volumes:
- files:/var/www/html/files
- theme:/var/www/html/public/theme
- media:/var/www/html/public/media
- thumbnail:/var/www/html/public/thumbnail
- sitemap:/var/www/html/public/sitemap
- custom-plugins:/var/www/html/custom/plugins

services:

MariaDB Database

database:
image: mariadb:11.4
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: „${MYSQL_ROOT_PASSWORD:-root}“
MARIADB_USER: shopware
MARIADB_PASSWORD: „${MYSQL_PASSWORD:-shopware}“
MARIADB_DATABASE: shopware
volumes:
- mysql-data:/var/lib/mysql
healthcheck:
test: [„CMD“, „mariadb-admin“, „ping“, „-h“, „localhost“, „-p${MYSQL_ROOT_PASSWORD:-root}“]
interval: 10s
timeout: 5s
retries: 5

Fix volume permissions

init-perm:
image: alpine
<<: *shopware
command: >
chown 82:82
/var/www/html/files
/var/www/html/public/theme
/var/www/html/public/media
/var/www/html/public/thumbnail
/var/www/html/public/sitemap
/var/www/html/custom/plugins

Initialize Shopware (runs migrations, installs, etc.)

init:
image: shopware-local
build:
context: .
<<: *shopware
entrypoint: [„php“, „vendor/bin/shopware-deployment-helper“, „run“]
depends_on:
database:
condition: service_healthy
init-perm:
condition: service_completed_successfully

Main web application

web:
image: shopware-local
build:
context: .
<<: *shopware
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
ports:
- „8000:8000“

Background message worker

worker:
image: shopware-local
build:
context: .
<<: *shopware
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
entrypoint: [„php“, „bin/console“, „messenger:consume“, „async“, „low_priority“, „–time-limit=300“, „–memory-limit=512M“]
healthcheck:
disable: true

Scheduled task runner

scheduler:
image: shopware-local
build:
context: .
<<: *shopware
restart: unless-stopped
depends_on:
init:
condition: service_completed_successfully
entrypoint: [„php“, „bin/console“, „scheduled-task:run“]
healthcheck:
disable: true

Optional: Redis/Valkey for caching and sessions

cache:

image: valkey/valkey:latest

restart: unless-stopped

volumes:
mysql-data:
files:
theme:
media:
thumbnail:
sitemap:
custom-plugins:

Dockerfile:

#syntax=docker/dockerfile:1.4

ARG PHP_VERSION=8.4
FROM ghcr.io/shopware/docker-base:${PHP_VERSION}-frankenphp AS base-image
FROM ghcr.io/shopware/shopware-cli:latest-php-${PHP_VERSION} AS shopware-cli

Build stage

FROM shopware-cli AS build

ADD . /src
WORKDIR /src

RUN --mount=type=cache,target=/root/.composer 
–mount=type=cache,target=/root/.npm 
/usr/local/bin/entrypoint.sh shopware-cli project ci /src

Final production image

FROM base-image

COPY --from=build --chown=82 --link /src /var/www/html

Nicht alles durchgelesen, aber beim Überfliegen genau das gesehen, was ich geschrieben habe.

Den Status in der Datenbank anpassen. Und nein, das drum herum benötigst du nicht, wenn du so Zugriff auf die Datenbank hast.

Nur so aus reiner Neugier:

Warum macht man eine Migration von Shopware 6.7.7.1 nach Shopware 6.7.7.1 ???
Wäre da nicht ein Export/Import auch eine Alternative gewesen? Und wenn man einfach nur eine 1:1 Kopie haben möchte, hätte man auch einfach die komplette DB kopieren können. Zielsystem danach nur anpassen und fertig.

naja, per 1:1 Kopie kann ich keine Bilder und PDF-Anhänge kopieren, oder?
Und kann ich die Erlebniswelten migrieren?

Nein, das ist leider nicht möglich.

Klar, warum sollte das nicht gehen. Einfach das komplette Shop-System (also Dateien + Datenbank) kopieren. Nach dem kopieren dann natürlich DB-Zugriff und ggf. Domain anpassen.

Mit einer 1:1-Kopie kopierst du alles.

Ich kopiere einfach alle Ordner aus meinem Quellshop Installationsverzeichnis und füge sie im Zielshop ein? Dann das gleiche mit der Datenbank?

Zwei Fragen:

  1. Geht das auch, wenn der Zielshop Docker hat und Quellshop nicht?
  2. Welche Dateien muss ich danach alles anpassen?

Moin @robertschoenfeld_1 ,

ja das geht auch dann. Die Dateien der Anwendung bleiben ja identisch egal in welcher Umgebung man diese betreibt. Was angepasst werden muss hängt ein wenig von der Installation ab. In der Regel reichen Anpassungen in der .env.local. Manchmal noch zusätzlich im config Ordner in den yml Dateien.

Warum möchtest du denn in die Docker Umgebung wechseln?

Grüße
Matthias

blöd gesagt, ich hab meinen Quellshop in einer Umgebung installiert, die komplett ungeeignet für die Anforderungen von shopware ist. Kann dort bspw. keine Cronjobs einrichten. Das habe ich aber erst gemerkt, als ich den shop im Prinzip fertig hatte. #Anfänger
Jetzt habe ich ein vps und dort shopware mit docker installiert. Soweit die Hintergründe

Was wäre der Vorteil gewesen, es nicht mit Docker zu tun?

Moin,

also generell ist Containerhosting eine feine Sache. Wenn ich dich richtig verstehe, bist du allerdings recht neu auf dem Gebiet und kennst dich nicht so aus. Da würde ich in der Regel immer das „klassische“ Hosting empfehlen, welches vermutlich auch zu 90% genutzt von allen Shops genutzt wird. Zum einen können dir andere besser helfen und zum anderen nimmst du die Docker Komponente einfach aus dem Spiel.

Einen Hoster bei dem man keine Cronjobs anlegen kann hab ich noch nie gesehen :see_no_evil_monkey: keine Supervisor Jobs anlegen oder sowas sieht man öfter.

Wie gesagt Container Hosting an sich ist super. Aber bringt nochmal etwas Komplexität mit rein.

Meine Empfehlung wäre wohl ein Hoster, der so alle Andorderungen abdeckt und es da neu zu installieren :slight_smile:

Grüße
Matthias

1 „Gefällt mir“

Ja,deswegen jetzt ja auf dem vps, da geht alles. Nur die Daten muss ich vom Quellshop holen. Und da es mit dem Migrationsassistenten nicht ganz einfach ist -

  • Bilder werden teilweise nicht migriert
  • Digitale Artikel und deren Anhänge werden nicht migriert

- ist die Frage, wie ich nun die 1:1 Kopie machen.

Wenn ich das richtig verstanden habe, muss ich

  • Im Docker in mein Installationsverzeichnis, dort alle Daten einfügen und ersetzen
  • Meine Datenbank migrieren
  • Composer.yml und .env Dateien anpassen auf den Datenbanknamen aus dem Quellshop

Moin @robertschoenfeld_1 ,

genau soweit passt das Vorgehen. Du solltest nur darauf achten, dass du zB schaust auch identische Datenbankversionen zu nehmen. Es könnte bei einer Kopie zB Porbleme geben, wenn du auf dem Quellsystem eine MariaDB genutzt hast und im Zielsystem eine MySql.

Was du mit der composer.yml meinst weiß ich gerade nicht.

Aber in der Regel reicht es, wenn die .env.local angepasst wird und dort alle Umgebungsdaten angepasst werden, wie Datenbank, Redis, OpenSearch etc.

Grüße
Matthias

Ich weiß ja nicht, wie groß dein Shop ist und ob das 100% oder halt so nebenher läuft.

Shopware 6 ist von der Einrichtung - wenn man es richtig machen will - und auch vom Betrieb/Update nicht mehr ganz so trivial. Dir scheinen einige technische Hintergründe zu fehlen, was als Shopbetreiber auch völlig normal/ok ist.

Ich würde dir aber dringend empfehlen, für einen Produktivshop für die saubere Einrichtung jemand zur Unterstützung dazu zu holen.

2 „Gefällt mir“

weiß denn jemand, ob der Migrationsasisstent digitale Varianten migrieren kann, inkl. der digitalen Anhänge?

Wolltest du nicht über die Kopie arbeiten? Das wäre definitiv der empfohlene Weg das System zu klonen :slight_smile:
Die Frage an sich kann ich aber so nicht beantworten, da noch nie getestet.

Grüße
Matthias

doch, hat tatsächlich mit der Kopie geklappt, obwohl Quellshop Mysql und VPS MariaDB. Hatte Hilfe.
Mit dem Migrationsassistenten hatte die Verknüpfung der digitalen Artikel nicht geklappt und die digitalen Varianten wurden garnicht angelegt.
Wäre etwas, was zukünftig implementiert werden sollte. Denke es gibt ja genug Menschen, die digitale Artikel / Varianten haben

Also digitale Produkte werden durchaus migriert. Das ist schon eingebunden. Da müsste man im Migrationslog schauen woran es gelegen hat.

Hallo zusammen, ich wollte zuerst einen neuen Beitrag erstellen und dann habe diesen hier gefunden. Vom Thema passt mehr oder weniger. Aktuell habe ich Shopware Version 6.7.8.0. Alles läuft gut. Aber nicht Migrations-Assistent. Sobald ich Update auf 16.0.0 oder jetzt 16.1.0 mache, dann kommt folgende Fehlermeldung

Migration-logs zeigt keine Fehler. Das sieht man auch auf dem Screenshot. Hat jemand auch so ein Problem? Und an was kann das liegen?

Mit besten Grüßen

Lago