web-dev-qa-db-fra.com

Erreur de connexion à la base de données après la copie d'une instance multisite WordPress vers un deuxième emplacement

Voici ma configuration. J'ai une instance multisite s'exécutant à http://example.com , et je souhaite effectuer le développement et le transfert. Déplacer une instance multisite existante de WP sur localhost est un cauchemar. Je vais donc créer dev sur un emplacement intermédiaire.

J'ai configuré http://staging.example.com pour qu'il pointe vers le répertoire/public_html/staging/du compte d'hébergement et ai copié tous les fichiers WP de ma racine dans/staging/répertoire. J'ai également copié les fichiers de base de données (vidage SQL, importé les tables dans une nouvelle base de données) et modifié le fichier wp-config.php pour qu'il pointe vers la nouvelle base de données.

Après avoir exécuté SQL pour modifier les enregistrements de base de données, j'ai également modifié cette ligne dans le fichier wp-config.php:

/** Turning on WordPress MU, new in 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- I change this line
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Changé en:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- now changed

Quand je charge http://staging.example.com , je reçois ... Error establishing database connection!

J'ai vérifié et vérifié trois fois le nom d'utilisateur et le mot de passe, m'assurant que l'utilisateur dispose de tous les privilèges sur la nouvelle base de données de transfert, et j'ai laissé DBHOST en tant que 'localhost' aide, non plus).

Pourquoi la connexion à la base de données échouerait-elle? N'importe qui? (Merci d'avance pour votre aide.)

NB: http://example.com fonctionne correctement avec des paramètres de connexion à la base de données très similaires, juste avec une base de données différente, le problème ne vient donc pas du serveur en panne. .

9
Jason Rhodes

Une pensée - quand je vais à www.example.com/staging/wp-admin, il me redirige automatiquement vers www.example.com/wp-admin

La redirection de staging.example.com vers example.com/staging pourrait-elle être en conflit avec l'installation existante?

UPDATE: cela pourrait être lié à des problèmes .htaccess et à des références de domaine compliquées dans la base de données.

Du WP Codex:

Déplacement WordPress Multisite

Le déplacement d'un multisite est beaucoup plus compliqué, car la base de données elle-même comporte plusieurs références au nom du serveur ainsi qu'à l'emplacement des dossiers.

La meilleure façon de déplacer Multisite consiste à déplacer les fichiers, à modifier les fichiers .htaccess et wp-config.php (si le nom du dossier contenant Multisite a été modifié), puis à modifier manuellement la base de données. Recherchez toutes les instances de votre nom de domaine et modifiez-les si nécessaire. Cette étape ne peut pas encore être facilement automatisée. Si vous déplacez Multisite d'un dossier à un autre, vous devez vous assurer de modifier les entrées de wp_blogs pour modifier le nom du dossier correctement.

2
timshutes

Je l'ai résolu et cela a fonctionné :)

Dans la table wp_blogs,

Ancienne structure était

Domain : localhost/smart_facility_linux
Path : /

Mais je l'ai changé pour le faire fonctionner comme suit:

Pour le site racine:

Domain : localhost
Path : /smart_facility_linux/

Pour le sous-site 1 (tout sous-site sous le site principal, je viens de donner un exemple):

Domain : localhost
Path : /smart_facility_linux/subsite1/
10
Pratik C Joshi

Il n'y a vraiment qu'un seul moyen de faire un transfert facile de domaine ou d'hôte que j'ai trouvé. Cela fonctionne parfaitement pour moi sur des installations mono et multisites.

  1. Exportez votre base de données dans un fichier .sql. (J'utilise PHPMyAdmin pour cela)
  2. Créez une nouvelle copie du fichier à modifier avec un nom légèrement différent.
  3. Ouvrez le fichier dans votre éditeur de texte préféré> (gedit par exemple)
  4. Exécutez une recherche/remplacement sur le domaine ET le chemin absolu (/ home/nom d'utilisateur/public_html/à/home/nom d'utilisateur/public_html /) de la production au développeur.
  5. Enregistrez le fichier.
  6. Copiez toute l'installation dans votre répertoire de développement.
  7. Ajoutez la ligne suivante à votre fichier wp-config.php:

    define ('RELOCATE', true);

  8. Connectez-vous et enregistrez vos paramètres de permaliens.

  9. Supprimez la règle de définition que vous avez insérée dans votre fichier wp-config.php.

2
Jeff Sebring