Errore di connessione DB dopo aver copiato un'istanza multisito di WordPress in una seconda posizione


11

Ecco la mia configurazione. Ho un'istanza multisito in esecuzione su http://example.com e voglio fare sviluppo e stadiazione. Lo spostamento di un'istanza Multisito esistente di WP su localhost è un incubo, quindi invece svilupperò una posizione di gestione temporanea.

Ho impostato http://staging.example.com per puntare alla directory / public_html / staging / dell'account di hosting e ho copiato tutti i file WP dalla mia radice nella directory / staging /. Ho anche copiato i file del database (dump SQL, importato le tabelle in un nuovo database) e modificato il file wp-config.php per puntare al nuovo database.

Dopo aver eseguito SQL per modificare i record del database, cambio anche questa riga nel file 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 );

Cambiato in:

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

Quando carico http://staging.example.com , ottengo ... Error establishing database connection!

Ho controllato e verificato tre volte il nome utente e la password, assicurandomi che l'utente avesse tutti i privilegi sul nuovo database di gestione temporanea e ho lasciato DBHOST come "localhost" (sebbene non sia cambiato in staging.example.com aiuto, sia).

Perché la connessione al database non riesce? Chiunque? (Grazie per il vostro aiuto in anticipo.)

NB: http://example.com funziona perfettamente con impostazioni di connessione db molto simili, solo con un database diverso, quindi non è un problema con il server del database inattivo.


Hmm. Nessuno, eh? È sicuramente un errore strano.
Jason Rhodes,

Ho lo stesso errore quando provo a eseguire la migrazione di Wordpress Network sul posto - nessun host spostato
Mikko Ohtamaa,

Ok. Ho rintracciato varie modalità di errore e ne ho pubblicato un post sul blog: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa,

Risposte:


2

Un pensiero: quando vado su www.example.com/staging/wp-admin mi reindirizza automaticamente su www.example.com/wp-admin

Il reindirizzamento da staging.example.com a example.com/staging potrebbe essere in conflitto con l'installazione esistente?

AGGIORNAMENTO: sembra che potrebbe essere correlato a problemi di .htaccess e riferimenti di dominio complicati nel database

Dal codice WP:

Spostamento di WordPress Multisite

Il multisito è molto più complicato da spostare, poiché il database stesso ha più riferimenti al nome del server e ai percorsi delle cartelle.

Il modo migliore per spostare Multisite è spostare i file, modificare .htaccess e wp-config.php (se il nome della cartella contenente Multisite è cambiato), quindi modificare manualmente il database. Cerca tutte le istanze del tuo nome di dominio e modificale secondo necessità. Questo passaggio non può ancora essere facilmente automatizzato. Se stai spostando Multisite da una cartella all'altra, dovrai assicurarti di modificare le voci wp_blogs per cambiare correttamente il nome della cartella.


11

L'ho risolto e ha funzionato :)

Nella wp_blogstabella,

La vecchia struttura era

Domain : localhost/smart_facility_linux
Path : /

Ma l'ho cambiato per farlo funzionare come segue:

Per il sito principale:

Domain : localhost
Path : /smart_facility_linux/

Per il sito secondario 1 (qualsiasi sito secondario nel sito principale, ho appena dato un esempio):

Domain : localhost
Path : /smart_facility_linux/subsite1/

Sfortunatamente non ha funzionato per me. Questo è un perfetto esempio della stupidità dell'uso di percorsi assoluti nel database per WP.
Pegues,

@Pegues ha funzionato per più di 10 persone qui :)
Pratik,

1
Sono felice che abbia funzionato per gli altri. Questo non funziona per molte persone - e da quello che ho studiato è perché c'è una differenza nei valori di db quando si passa dal sottodominio alla sottodirectory. E al mio commento iniziale, l'uso di percorsi assoluti non è saggio da parte di WP. Non è mai stato ed è la causa di così tanti problemi. E l'impostazione di un flusso di lavoro adeguato con la pipeline CI / CD non è realmente possibile a livello aziendale.
Pegues,

2

C'è davvero solo un modo per fare un facile trasferimento di dominio o host che ho trovato. Funziona perfettamente per me su installazioni singole e multisito.

  1. Esporta il tuo database in un file .sql. (Uso PHPMyAdmin per questo)
  2. Crea una nuova copia del file da modificare con un nome leggermente diverso.
  3. Apri il file nel tuo editor di testo preferito> (ad esempio gedit)
  4. Esegui trova / sostituisci sul dominio E percorso assoluto (/ home / nomeutente / public_html / a / home / nomeutente / public_html /) dalla produzione allo sviluppo.
  5. Salva il file.
  6. Copia l'intera installazione nella tua directory di sviluppo.
  7. Aggiungi la seguente riga al tuo file wp-config.php:

    define ( 'RELOCATE', true);

  8. Accedi e salva le impostazioni dei permalink.

  9. Rimuovi la regola di definizione che hai inserito nel tuo wp-config.php.


1
Funziona bene, tranne se si finisce per sostituire una stringa in dati serializzati, come un widget o un'opzione di tema, con una stringa di diversa lunghezza. I dati serializzati si presentano così: 76: "hxxp: //www-dev.example.com/wp-content/uploads/company_logo_swoosh.gif '' s: 70:" hxxp: //www.example.com/ wp-content / uploads / company_logo_swoosh.gif '(nota: le lunghezze 76 e 70 non corrispondono più alle stringhe presentate - ho modificato i dettagli del mio sito e non ho tenuto traccia del conteggio dei nuovi personaggi.) L'unica soluzione è per aggiornare manualmente i conteggi o mantenere invariata la lunghezza del dominio di gestione temporanea.
marfarma,

Ho anche sostituito tt con xx in modo che gli URL non fossero oscurati: non si vedeva la differenza tra loro.
marfarma,

Buono a sapersi. Ciò significa che dovremmo almeno prenderci il tempo di esaminare tutte le voci man mano che vengono trovate e sostituite anziché sostituirle tutte.
Jeff Sebring,

1
È possibile utilizzare questo script per cercare / sostituire i dati serializzati: interconnectit.com/products/…
Costa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.