Se você acredita que nenhum dos campos a serem atualizados são serializados, as soluções acima funcionarão bem.
No entanto, se algum dos campos que precisar de atualização contiver dados serializados, uma Consulta SQL ou uma simples pesquisa / substituição em um arquivo de despejo, a serialização será interrompida (a menos que a cadeia substituída tenha exatamente o mesmo número de caracteres que a cadeia pesquisada).
Para ter certeza, um campo "serializado" se parece com isso:
a:1:{s:13:"administrator";b:1;}
O número de caracteres nos dados relevantes é codificado como parte dos dados.
A serialização é uma maneira de converter "objetos" em um formato facilmente armazenado em um banco de dados ou de transportar facilmente dados de objetos entre diferentes idiomas.
Aqui está uma explicação dos diferentes métodos usados para serializar dados de objetos, e por que você pode querer fazer isso, e aqui está uma postagem centrada no WordPress: Dados serializados, o que isso significa e por que é tão importante? em linguagem simples.
Seria incrível se o MySQL tivesse alguma ferramenta embutida para lidar com dados serializados automaticamente, mas não, e como existem diferentes formatos de serialização, não faria sentido fazê-lo.
wp-cli
Algumas das respostas acima pareciam específicas aos bancos de dados WordPress, que serializam muitos de seus dados. WordPress oferece uma ferramenta de linha de comando, wp procurar substituição , que faz alça de serialização.
Um comando básico seria:
wp search-replace 'an-old-string' 'a-new-string' --dry-run
No entanto, o WordPress enfatiza que guid
nunca deve ser alterado , por isso recomenda pular essa coluna.
Também sugere que muitas vezes você deseja pular a wp_users
tabela.
Aqui está como isso seria:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Nota: Adicionei o --dry-run
sinalizador para que uma cópia e colagem não estrague automaticamente o banco de dados de ninguém. Depois de ter certeza de que o script faz o que você deseja, execute-o novamente sem esse sinalizador.
Plug-ins
Se você estiver usando o WordPress, também existem muitos plug-ins gratuitos e comerciais disponíveis que oferecem uma interface GUI para fazer o mesmo, empacotados com muitos recursos adicionais.
Interconnect / it php script
Interconnect / oferece um script php para manipular dados serializados: Ferramenta Safe Search and Replace . Foi criado para uso em sites WordPress, mas parece que pode ser usado em qualquer banco de dados serializado por PHP.
Muitas empresas, incluindo o próprio WordPress, recomendam esta ferramenta. Instruções aqui, cerca de 3/4 da página.