Errore di connessione al database dopo aver copiato un'istanza WordPress Multisite in una seconda posizione

18 lug 2011, 15:53:40
Visualizzazioni: 25.3K
Voti: 13

Ecco la mia configurazione. Ho un'istanza Multisite in esecuzione su http://example.com e voglio fare sviluppo e staging. Spostare un'istanza Multisite esistente di WP su localhost è un incubo, quindi farò lo sviluppo su un ambiente di staging.

Ho configurato http://staging.example.com per puntare alla directory /public_html/staging/ dell'account di hosting e ho copiato tutti i file WP dalla mia root 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, ho anche cambiato questa riga nel file wp-config.php:

/** Attivazione WordPress MU, novità in 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- Modifico questa riga
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Modificata in:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- ora modificata

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

Ho controllato e ricontrollato username e password, mi sono assicurato che l'utente abbia tutti i privilegi sul nuovo database di staging e ho lasciato DBHOST come 'localhost' (anche se cambiarlo in staging.example.com non ha aiutato).

Perché la connessione al database dovrebbe fallire? Qualcuno può aiutare? (Grazie in anticipo per l'aiuto.)

NB: http://example.com funziona correttamente con impostazioni di connessione al database molto simili, solo con un database diverso, quindi non è un problema di server database non attivo.

3
Commenti

Mmm. Nessuno, eh? È sicuramente un errore strano.

Jason Rhodes Jason Rhodes
19 lug 2011 00:16:47

Ho lo stesso errore quando provo a fare una migrazione in-place di una rete Wordpress - nessun host spostato

Mikko Ohtamaa Mikko Ohtamaa
22 ago 2011 10:29:40

Ok. Ho individuato varie modalità di fallimento e ne ho fatto un post sul blog: http://opensourcehacker.com/2011/08/22/trouble-filled-installation-tutorial-of-wordpress-network-a-k-a-multi-site/

Mikko Ohtamaa Mikko Ohtamaa
22 ago 2011 16:44:33
Tutte le risposte alla domanda 4
3
15

L'ho risolto & ha funzionato :)

Nella tabella wp_blogs,

La vecchia struttura era

Dominio : localhost/smart_facility_linux
Percorso : /

Ma l'ho modificata per farla funzionare come segue:

Per il sito principale:

Dominio : localhost
Percorso : /smart_facility_linux/

Per il sotto-sito 1 (qualsiasi sotto-sito sotto il sito principale, ho dato solo un esempio):

Dominio : localhost
Percorso : /smart_facility_linux/subsite1/
17 apr 2015 13:33:03
Commenti

Sfortunatamente non ha funzionato per me. Questo è un perfetto esempio della stupidità di usare percorsi assoluti nel database per WordPress.

Pegues Pegues
13 dic 2019 18:54:26

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

Pratik Joshi Pratik Joshi
15 dic 2019 05:52:20

Sono contento che abbia funzionato per altri. Questo non funziona per moltissime persone - e da quello che ho ricercato è perché c'è una differenza nei valori del database quando si passa da sottodominio a sottodirectory. E per tornare al mio commento iniziale, l'uso di percorsi assoluti non è saggio in WordPress. Non lo è mai stato, ed è la causa di così tanti problemi. E impostare un flusso di lavoro corretto con una pipeline CI/CD non è realmente possibile a livello enterprise.

Pegues Pegues
16 dic 2019 19:59:48
0

Un pensiero - quando vado su www.example.com/staging/wp-admin vengo automaticamente reindirizzato a www.example.com/wp-admin

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

AGGIORNAMENTO: sembra che potrebbe essere correlato a problemi con .htaccess e riferimenti complessi al dominio nel database

Dal WP Codex:

Spostare WordPress Multisite

Multisite è molto più complicato da spostare, poiché il database stesso contiene molteplici riferimenti al nome del server così come alle posizioni delle cartelle.

Il modo migliore per spostare Multisite è spostare i file, modificare .htaccess e wp-config.php (se è cambiato il nome della cartella contenente Multisite), e poi 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 a un'altra, dovrai assicurarti di modificare le voci wp_blogs per cambiare correttamente il nome della cartella.

20 lug 2011 00:18:42
4

Ho trovato solo un modo semplice per trasferire un dominio o un host senza problemi. Funziona perfettamente per me sia su installazioni singole che multisito.

  1. Esporta il tuo database in un file .sql (io 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 una ricerca/sostituzione sia sul dominio CHE sul percorso assoluto (/home/utente/public_html/ in /home/utente/public_html/) da produzione a 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 define che hai inserito nel tuo wp-config.php

22 lug 2011 13:49:34
Commenti

Funziona bene, tranne nel caso in cui si finisca per sostituire una stringa in dati serializzati, come un widget o un'opzione del tema, con una stringa di lunghezza diversa. I dati serializzati hanno questo aspetto - s: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 mostrate - ho modificato i dettagli del mio sito senza tenere traccia del nuovo conteggio di caratteri.) L'unica soluzione per questo è aggiornare manualmente i conteggi - oppure mantenere la stessa lunghezza del dominio di staging.

marfarma marfarma
25 lug 2011 21:12:59

Ho anche sostituito tt con xx in modo che gli URL non fossero oscurati -- non si poteva vedere la differenza tra di loro.

marfarma marfarma
25 lug 2011 21:15:27

È buono a sapersi. Questo significa che dovremmo almeno prendere il tempo per esaminare tutte le voci mentre vengono trovate e sostituite invece di sostituire tutto in una volta.

Jeff Sebring Jeff Sebring
26 lug 2011 00:50:30

Puoi utilizzare questo script per cercare/sostituire dati serializzati: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Costa Costa
14 ott 2014 03:56:24
0

Questo ha funzionato per me.

  1. Comprimi tutti i file in un archivio zip
  2. Scarica il database
  3. Carica i file sul nuovo server
  4. Modifica il database con un editor di testo (ho usato Notepad++)
  5. Sostituisci domain.com con newdomain.com
  6. Carica il database sul nuovo server
  7. Accedi e goditi il risultato!

Nota: Ricorda di cambiare il nome del dominio all'interno di config.php. Inoltre, copia il file .htaccess sul nuovo server. Questa procedura è valida per un'installazione base di WordPress Multisite con plugin minimi. Cerca sempre di fare un backup prima.

28 lug 2021 23:58:32