Erro de conexão com o banco de dados após copiar uma instância Multisite do WordPress para um segundo local

11

Aqui está a minha configuração. Eu tenho uma instância Multisite em execução em http://example.com e quero fazer desenvolvimento e preparo. Mover uma instância Multisite existente do WP para o host local é um pesadelo, então eu vou fazer o dev em um local de teste.

Configurei http://staging.example.com para apontar para o diretório / public_html / staging / da conta de hospedagem e copiei todos os arquivos WP da minha raiz para o diretório / staging /. Também copiei os arquivos do banco de dados (despejo do SQL, importei as tabelas para um novo banco de dados) e alterei o arquivo wp-config.php para apontar para o novo banco de dados.

Depois de executar o SQL para alterar os registros do banco de dados, eu também altero essa linha no arquivo 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 );

Alterado para:

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

Quando carrego http://staging.example.com , recebo ... Error establishing database connection!

Eu verifiquei e tripliquei o nome de usuário e a senha, verifiquei se o usuário tem todos os privilégios no novo banco de dados de teste e deixei o DBHOST como 'localhost' (embora a alteração para staging.example.com não ajuda também).

Por que a conexão com o banco de dados falhou? Qualquer um? (Agradecemos sua ajuda antecipadamente.)

NB: http://example.com está funcionando bem em configurações de conexão db muito semelhantes, apenas com um banco de dados diferente, portanto não é um problema o servidor de banco de dados estar inativo.

Jason Rhodes
fonte
Hmm. Ninguém, hein? É um erro estranho, com certeza.
21711 Jason Rhodes
Eu tenho o mesmo erro ao tentar fazer a migração Wordpress de rede no local - não acolhimento mudou
Mikko Ohtamaa
Está bem. Eu localizei vários modos de falha e fiz um post no blog deles: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

Respostas:

2

Um pensamento - quando vou para www.example.com/staging/wp-admin, ele automaticamente me redireciona para www.example.com/wp-admin

O redirecionamento de staging.example.com para example.com/staging pode estar em conflito com a instalação existente?

UPDATE: parece que isso pode estar relacionado a problemas de .htaccess e referências de domínio complicadas no banco de dados

Do WP Codex:

Mover WordPress Multisite

A movimentação multissite é muito mais complicada, pois o próprio banco de dados possui várias referências ao nome do servidor e aos locais das pastas.

A melhor maneira de mover o Multisite é mover os arquivos, editar o arquivo .htaccess e wp-config.php (se o nome da pasta que contém o Multisite foi alterado) e editar manualmente o banco de dados. Pesquise todas as instâncias do seu nome de domínio e altere-as conforme necessário. Esta etapa ainda não pode ser facilmente automatizada. Se você estiver movendo o Multisite de uma pasta para outra, precisará editar as entradas wp_blogs para alterar o nome da pasta corretamente.

timshutes
fonte
11

Eu resolvi e funcionou :)

Na wp_blogsmesa,

Estrutura antiga era

Domain : localhost/smart_facility_linux
Path : /

Mas eu mudei para fazê-lo funcionar da seguinte maneira:

Para site raiz:

Domain : localhost
Path : /smart_facility_linux/

Para o subsite 1 (qualquer subsite no site principal, acabei de dar um exemplo):

Domain : localhost
Path : /smart_facility_linux/subsite1/
Pratik
fonte
Infelizmente não funcionou para mim. Este é um exemplo perfeito da estupidez de usar caminhos absolutos no banco de dados para o WP.
Pegues 13/12/19
@Pegues funcionou para mais de 10 pessoas aqui :)
Pratik
11
Estou feliz que funcionou para os outros. Isso não funciona para muitas pessoas - e pelo que pesquisei, é porque há uma diferença nos valores de db ao mudar de subdomínio para subdiretório. E, para meu comentário inicial, o uso de caminhos absolutos não é sábio pelo WP. Nunca foi e é a causa de tantos problemas. E a configuração de um fluxo de trabalho adequado com o pipeline de CI / CD não é realmente possível em nível corporativo.
Pegues 16/12/19
2

Existe realmente apenas uma maneira de fazer uma transferência fácil de domínio ou host que eu encontrei. Ele funciona perfeitamente para mim em instalações de um e vários locais.

  1. Exporte seu banco de dados para um arquivo .sql. (Eu uso o PHPMyAdmin para isso)
  2. Crie uma nova cópia do arquivo a ser editado com um nome ligeiramente diferente.
  3. Abra o arquivo no seu editor de texto preferido> (gedit por exemplo)
  4. Execute uma localização / substituição no domínio E caminho absoluto (/ home / nome de usuário / public_html / para / home / nome de usuário / public_html /) da produção para o dev.
  5. Salve o arquivo.
  6. Copie toda a instalação no seu diretório de desenvolvimento.
  7. Adicione a seguinte linha ao seu arquivo wp-config.php:

    define ('RELOCATE', verdadeiro);

  8. Faça login e salve as configurações de links permanentes.

  9. Remova a regra de definição que você colocou no seu wp-config.php.

Jeff Sebring
fonte
11
Isso funciona bem, exceto se você acabar substituindo uma sequência em dados serializados, como uma opção de widget ou tema, por uma sequência com comprimento diferente. Os dados serializados têm esta aparência - 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: os comprimentos 76 e 70 não correspondem mais às strings apresentadas - editei os detalhes do meu site e não acompanhei a nova contagem de caracteres.) A única solução para isso é para atualizar manualmente as contagens - ou manter o mesmo comprimento do domínio de teste.
Marfarma
Também substituí tt por xx para que os URLs não sejam ocultados - você não pode ver a diferença entre eles.
Marfarma
É bom saber disso. Isso significa que devemos pelo menos reservar um tempo para analisar todas as entradas conforme elas são encontradas e substituídas, em vez de substituir todas.
Jeff Sebring
11
Você pode usar este script para pesquisar / substituir dados serializados: interconnectit.com/products/…
Costa