Se sei sicuro che nessuno dei campi da aggiornare sia serializzato, le soluzioni sopra funzioneranno bene.
Tuttavia, se uno dei campi che devono essere aggiornati contiene dati serializzati, una query SQL o una semplice ricerca / sostituzione su un file di dump, interromperà la serializzazione (a meno che la stringa sostituita abbia esattamente lo stesso numero di caratteri della stringa cercata).
A dire il vero, un campo "serializzato" è simile al seguente:
a:1:{s:13:"administrator";b:1;}
Il numero di caratteri nei dati rilevanti è codificato come parte dei dati.
La serializzazione è un modo per convertire "oggetti" in un formato facilmente memorizzato in un database o per trasportare facilmente i dati degli oggetti tra lingue diverse.
Ecco una spiegazione dei diversi metodi usati per serializzare i dati degli oggetti, e perché potresti volerlo fare, ed ecco un post incentrato su WordPress: Dati serializzati, cosa significa e perché è così importante? in un linguaggio semplice.
Sarebbe sorprendente se MySQL avesse uno strumento integrato per gestire automaticamente i dati serializzati, ma non lo è, e poiché ci sono diversi formati di serializzazione, non avrebbe nemmeno senso farlo.
wp-cli
Alcune delle risposte di cui sopra sembravano specifiche per i database WordPress, che serializzano gran parte dei suoi dati. WordPress offre uno strumento a riga di comando, Wp ricerca-sostituzione , che fa maniglia serializzazione.
Un comando di base sarebbe:
wp search-replace 'an-old-string' 'a-new-string' --dry-run
Tuttavia, WordPress sottolinea che guid
non dovrebbe mai essere modificato , quindi consiglia di saltare quella colonna.
Suggerisce anche che spesso vorrai saltare il wp_users
tavolo.
Ecco come sarebbe:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Nota: ho aggiunto il --dry-run
flag in modo che un copia-incolla non rovini automaticamente il database di nessuno. Dopo che sei sicuro che lo script fa quello che vuoi, eseguilo di nuovo senza quella bandiera.
Plugin
Se stai usando WordPress, ci sono anche molti plugin gratuiti e commerciali disponibili che offrono un'interfaccia gui per fare lo stesso, impacchettati con molte funzionalità aggiuntive.
Interconnect / it php script
Interconnect / offre uno script php per gestire dati serializzati: strumento Safe Search and Replace . È stato creato per l'uso su siti WordPress, ma sembra che possa essere utilizzato su qualsiasi database serializzato da PHP.
Molte aziende, incluso WordPress stesso, raccomandano questo strumento. Istruzioni qui, circa 3/4 in fondo alla pagina.