web-dev-qa-db-fra.com

Comment déplacer une base de données locale à site unique vers une base de données multisite distante?

Je suis assez nouveau dans Wordpress et je suis un peu confus sur la façon de prendre la base de données de mon serveur local et de la remplacer par celle du serveur sur un multisite Wordpress.

J'ai déjà remplacé la base de données de local à serveur, mais c'était un site multisite.

La démarche que je fais habituellement est:

  1. sauvegarder la base de données sur le serveur
  2. exporter la base de données locale
  3. déposer toutes les tables sur la base de données du serveur
  4. importer la base de données locale
  5. aller à wp_option
  6. changer la valeur pour siteurl et home vers l'URL du site

Lorsque j'essaie cela, la table sur le serveur est très différente de celle de mon local.

Ma structure de base de données locale ressemble à ceci:

enter image description here

Habituellement, la base de données du serveur est la même, mais pas dans ce cas.

Structure de la base de données du serveur:

enter image description here

Donc, je suis un peu confus sur la façon de résoudre ce problème. Puis-je continuer à faire ce que je fais habituellement ou dois-je suivre d'autres étapes?

Merci d'avance.

Edit: Pensez que j'ai un peu trop compliqué cela, je pourrais simplement créer une nouvelle base de données sur le serveur et pointer le fichier wp_config.php sur celui-ci à la place et tout devrait bien se passer

Edit 2: Nope ne fonctionne pas comme je le pensais. continue à avoir une erreur de boucle de redirection

Edit 3: J'ai enfin tout migré correctement grâce à @ Michael Ecklund ! Depuis que je mettais à jour la base de données de la page primaire, je n'avais pas besoin de créer un nouveau site, mais je suivais tout de même le reste de la instruction qu'il écrivait et tout se passait assez bien. Un peu de confusion au début, mais c'était mon propre manque de connaissances.

Éditer 4: Juste un FYI, si après la migration de la base de données et que vous avez perdu l'accès au tableau de bord. Allez dans votre base de données principale et dans la table * _options (dans mon cas, tenp_options) et cherchez un wp_user_roles dans la colonne option_name et remplacez le nom de cette colonne par le préfixe de votre site (qui dans mon cas est tenp_). Vous devriez maintenant pouvoir pour accéder à nouveau à votre tableau de bord.

2
Radizzt

Fusion de l'installation autonome de WordPress avec l'installation multisite de WordPress

Avant de commencer:

  1. Créez un nouveau site dans votre réseau multisite, qui sera le site que vous migrez à partir de l'installation autonome. (Prenez note du numéro d'identification du site, vous en aurez besoin plus tard.)
  2. Vous devez vous assurer que tous les utilisateurs de l'installation autonome sont créés et existent dans l'installation multisite.

Étape 1 - Sauvegarder les bases de données.

Recherchez sur votre serveur Web le répertoire dans lequel la copie autonome de WordPress est installée et le répertoire sur votre serveur Web dans lequel la copie multisite de WordPress est installée, puis ouvrez le fichier wp-config.php des deux installations. Localisez la constante PHP constante DB_NAME. Il contient le nom de la base de données utilisée par l’installation particulière de WordPress.

  1. Sauvegardez la base de données de l'instillation autonome.
  2. Sauvegardez la base de données de l'installation multisite.

Étape 2 - Identifiez les préfixes de table de base de données.

Par défaut, le préfixe de la table de la base de données est wp_.

Si vous ne pouvez pas identifier le préfixe de la table de base de données en examinant simplement la base de données. Vous pouvez regarder dans le répertoire de base de votre installation WordPress et ouvrir le fichier wp-config.php du site en question et chercher une ligne comme $table_prefix = 'wp_';.

Dans votre cas, cela ressemble à:

  • Le préfixe de table de base de données de l'installation autonome est la valeur par défaut de wp_.
  • Le préfixe de la base de données de l'installation multisite est personnalisé avec tenp_.

Étape 3 - Exporter des bases de données. Importer dans l'environnement local.

Sur un serveur de base de données local, créez une base de données temporaire pour chacune de ces bases de données. Peut-être pour garder les choses simples, nommez une base de données "standalone", et la seconde "multisite".

  • Importez la base de données de l'installation autonome (que vous venez d'exporter) dans la base de données "standalone" (que vous venez de créer) sur votre serveur de base de données local.
  • Importez la base de données de l'installation multisite (que vous venez d'exporter) dans la base de données "multisite" (que vous venez de créer) sur votre serveur de base de données local.

Étape 4 - Rechercher et remplacer.

C’est à cette étape que vous devrez probablement remplacer les modifications d’URL nécessaires. (http à https), (non-www à www), (ajouter ou supprimer des répertoires de l'URL), etc.

Effectuez cette tâche sur la base de données "standalone" que vous avez créée sur votre serveur de base de données local.

N'oubliez pas de changer les choses comme vous le souhaitez dans l'installation multisite (le résultat final).

Pour cette procédure, vous aurez besoin d'un outil de base de données:

  1. WP-CLI :: wp recherche-remplacer qui est tout en ligne de commande.
  2. Si vous préférez une interface graphique, vous pouvez également utiliser le script de recherche et de remplacement de base de données dans PHP par interconnect/it .

Etape 4.2 - Utilisateurs et post-auteurs

Vous voudrez probablement créer une note sur tous les utilisateurs de votre installation autonome et mapper l'ancien ID utilisateur sur le nouvel ID utilisateur (à partir de l'installation Multisite).

Vous pouvez simplement créer un fichier texte temporaire et faire quelque chose comme ceci:

1 => 4
8 => 23
15 => 9

Les numéros à gauche sont les identifiants de l'installation autonome et les numéros à droite sont les identifiants de l'installation multisite.

Vous voudrez ensuite mettre à jour la colonne post_author de la table wp_posts pour mettre à jour tous les anciens ID utilisateur avec les nouveaux ID utilisateur. Sinon, lorsque vous visualisez votre site migré de autonome à multisite, vous êtes un chaton confus. Cela va dire que des éléments de votre site ont été publiés par des personnes aléatoires et probablement même des personnes de différents sites de votre réseau. Cela peut être catastrophique s'il est négligé.

Pour chacun des mappages d'ID utilisateur dans votre fichier texte, vous devrez émettre une commande similaire à celle-ci dans MySQL:

UPDATE wp_posts
SET post_author = '4'
WHERE post_author = '1'
  • La ligne SET post_author = '4' est le nouvel ID utilisateur (l'ID utilisateur de l'installation multisite)
  • La ligne WHERE post_author = '1' est l'ancien ID utilisateur (l'ID utilisateur de l'installation autonome).

Étape 5 - Utilisateurs et Usermeta

Je n'ai pas encore trouvé de bonne solution pour cette étape. En général, je ne fais que recréer les utilisateurs manuellement dans l'installation multisite.

En d'autres termes, je laisse généralement juste tomber deux tables wp_users et wp_usermeta.

Si quelqu'un souhaite améliorer cette étape, n'hésitez pas à éditer et ajouter des conseils ici.

Étape 6 - Mise à jour des noms de table de base de données

Cette étape ressemble beaucoup à l'étape 4.

Vous voudrez mapper les anciens noms de table sur les nouveaux noms de table dans la base de données "standalone" sur votre serveur de base de données local.

C’est à cette étape que vous devez connaître le numéro d’identification du site à partir de votre installation multisite.

Par exemple:Si l'ID de votre site est 15 et que le préfixe de votre table de base de données utilisé sur votre installation multisite est tenp_, la table de la base de données wp_posts deviendrait alors tenp_15_posts.

Voici la commande MySQL que vous pouvez utiliser pour mettre à jour vos noms de table de base de données:

RENAME TABLE `wp_posts` 
TO `tenp_15_posts`;
  • La première ligne est l'ancien nom de la table de la base de données (le nom de la table de la base de données de l'installation autonome).
  • La deuxième ligne est le nouveau nom de la table de base de données (le format du nom de la table de base de données à utiliser dans l'installation multisite).

Alternativement, si votre base de données est suffisamment petite. Vous pouvez simplement exporter la base de données entière et l'ouvrir dans un éditeur de texte. Puis trouvez tout et remplacez. Enregistrez-le lorsque vous avez terminé.

Étape 7 - Exporter et importer

Une fois que toutes les modifications ci-dessus ont été apportées, exportez la base de données "standalone" à partir de votre serveur de base de données local.

  1. Importez le fichier .sql exporté dans la base de données "multisite" de votre serveur de base de données local.
  2. Exportez la base de données "multisite" à partir de votre serveur de base de données local.
  3. Supprimez les tables de base de données multisites actuelles utilisées pour votre base de données multisite existante (et non celle de votre serveur de base de données local).
  4. Importez le fichier .sql de votre base de données "multisite" que vous avez exportée à partir de votre serveur de base de données local et importez-le dans votre base de données utilisée par votre installation Multisite existante (celle à partir de laquelle vous avez simplement supprimé toutes les tables). Il s'agit essentiellement de remplacer la base de données de l'installation multisite actuelle par la base de données modifiée contenant le site autonome nouvellement migré.

Moving Télécharge des fichiers de ./wp-content/.

Standalone et Multisite stockent les fichiers téléchargés différemment. Le multisite les stocke dans ./wp-content/sites/{$site_id}/. Assurez-vous de déplacer correctement vos fichiers téléchargés.


Modification du site principal:

Recherchez la table de base de données wp_site dans votre base de données multisite. Editez les colonnes id et domain de manière appropriée.

Vous devrez peut-être également modifier la colonne site_id dans la table wp_blogs.

Recherchez également ces lignes dans wp-config.php et réglez-les à nouveau en conséquence.

define( 'DOMAIN_CURRENT_SITE', 'www.your-domain.com' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Liens utiles:


End.

Si quelque chose est déroutant, commentez s'il vous plaît et je vais essayer de le clarifier.

1
Michael Ecklund

La base de données est en effet configurée différemment pour un multiwp, ces tenp_12 sont des préfixes pour chaque site du multisite. Il semble que le site que vous exécutez localement n’est pas un site multisite. Si vous essayez d’ajouter un autre site (qui n’est pas le site principal), je vous suggère tout d’abord de l’ajouter à partir du tableau de bord multisite, puis d’y déposer des tables (par exemple, tenp_x où x ressemble à votre identifiant de site) et d’importer dans ces tables. Cela vous obligerait à préamplifier renommer le nom de la table ainsi que des colonnes, après quoi vous pourrez configurer la valeur pour siteurl et home vers l'URL du site que vous décrivez au point 6.

1
DGRFDSGN