Como substituir o nome de domínio em um banco de dados Wordpress?

11

Eu tenho um banco de dados Wordpress que foi instalado em um ambiente de desenvolvimento ... assim, todas as referências ao site em si têm um endereço IP fixo (digamos 192.168.16.2). Agora, tenho que migrar esse banco de dados para uma nova instalação do Wordpress em uma hospedagem. O problema é que o dump SQL contém muitas referências ao endereço IP, e eu tenho que substituí-lo por: my_domain.com.

Eu poderia usar sed ou algum outro comando para alterar o que da linha de comando, o problema é que há muitos dados de configuração que usam JSON. E daí? Bem, como você sabe, os arrays JSON usam coisas como: s:4: para saber quantos caracteres um elemento possui e, portanto, se eu apenas substituir o IP pelo nome do domínio, os arquivos de configuração serão corrompidos.

Eu usei um aplicativo para o Windows há alguns anos que permite alterar valores em um banco de dados e cuida dos arrays JSON. Infelizmente, esqueci o nome do aplicativo ... então a pergunta é: você conhece algum aplicativo que me permita fazer o que eu quero?

    
por Cristian 21.12.2010 / 23:54

9 respostas

7

Os dados que você está vendo não são formatados em JSON. O JSON não (normalmente) armazena tipos de valor e comprimentos assim. O que você está vendo é dados SERIALIZADOS. Uma pesquisa no google por "mysql replace serialized" produz esta página, o que pode ajudar: enlace

    
por MathSmath 22.12.2010 / 21:16
8

O Codex tem um guia decente - Como alterar o URL do site .

Basicamente, existem vários lugares lá URL importa ou não tanto (eu posso estar faltando alguns):

  • home e siteurl opções que controlam onde o WP acha que o site é;
  • postar GUIDs, parecem links, mas na verdade não são - apenas identificadores. Eu não tenho certeza absoluta de que eles são irrelevantes, mas eu mudei muito as URLs na pilha de testes e nunca me preocupei em atualizá-las.
  • links em post bodies;
  • possivelmente links nas configurações do plug-in.
por Rarst 22.12.2010 / 07:58
6

Como Rarst disse acima, há apenas duas configurações no banco de dados que NECESSITA mudar. Depois de importar o banco de dados, eu faço o login no PHPMyAdmin e edito o banco de dados diretamente.

Eu uso um servidor de desenvolvimento no meu PC o tempo todo para importar datafeeds e eles têm o URL anexado aos Posts ao longo das linhas de enlace e nunca causou problemas.

Eu costumava usar uma pesquisa SQL e substituí-la até perceber que não importava. Migrei alguns sites de um domínio para outro e onde tive URLs absolutas no conteúdo, usarei a opção de pesquisa e substituição de SQL.

update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');

David

    
por David Law 23.12.2010 / 02:53
5

Este é um recurso incrível que eu tenho bookmarked que eu volto a e outra vez enlace

Eles afirmam

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
    
por Tom 22.12.2010 / 00:51
3

Você pode definir esses valores com constantes no wp-config.php . Depois disso, você pode, quando quiser, alterar as entradas no banco de dados através do plugin Adminer. Escreva isso no wp-config.php e os valores no DB não são relevantes:

define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
    
por bueltge 22.12.2010 / 01:02
2

Dê uma olhada na minha resposta para esta pergunta:

Ele soluciona seus problemas com a limpeza de dados e pode ser personalizado para necessidades específicas de migração de dados usando ganchos também.

Espero que ajude.

    
por MikeSchinkel 22.12.2010 / 08:16
2

Consultas SQL simples - não é necessário um material REPLACE complicado:

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'siteurl';

update wp_options set option_value = 'http://mynewdomain.com' where option_name = 'home';

Use aqueles com o PHPMyAdmin ou qualquer outra maneira que você preferir acessar o banco de dados.

    
por Mark 23.12.2010 / 05:31
1

Esta é uma pergunta muito antiga, mas desde que a encontrei enquanto procurava outra coisa, pensei em acrescentar isto para referência futura.

Acho que a maneira mais simples e completa de fazer isso é usando searchreplacedb2.php. Ele pode ser encontrado aqui: enlace junto com uma explicação sobre seu uso.

Definitivamente, ele me poupou muito tempo com a migração do dev para ambientes em meus sites wordpress.

Apenas certifique-se de excluí-lo de um servidor público depois de terminar!

    
por MatthewLee 19.04.2013 / 22:02
1

Certifique-se de ter o novo banco de dados selecionado, então execute algumas atualizações SQL e substitua os comandos nas tabelas notavelmente, wp_options, wp_posts, wp_postmeta.

Use o código abaixo e troque seus URLs antigos e novos, sem barras. Além disso, se necessário, altere os valores de prefixo da tabela quando aplicável (ou seja, wp_)

UPDATE wp_options SET option_value = replace(option_value, 'http_www.oldurl', 'http_www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';    
UPDATE wp_posts SET guid = replace(guid, 'http_www.oldurl','http_www.newurl');    
UPDATE wp_posts SET post_content = replace(post_content, 'http_www.oldurl', 'http_www.newurl');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http_www.oldurl','http_www.newurl');
    
por user129645 14.10.2017 / 22:31