Error de conexión a la base de datos después de copiar una instancia de WordPress Multisite a una segunda ubicación

18 jul 2011, 15:53:40
Vistas: 25.3K
Votos: 13

Esta es mi configuración. Tengo una instancia Multisite ejecutándose en http://example.com, y quiero hacer desarrollo y staging. Mover una instancia existente de Multisite de WP a localhost es una pesadilla, así que voy a hacer el desarrollo en una ubicación de staging.

Configuré http://staging.example.com para que apunte al directorio /public_html/staging/ de la cuenta de hosting, y copié todos los archivos de WP desde mi raíz al directorio /staging/. También copié los archivos de la base de datos (volcado SQL, importé las tablas a una nueva base de datos) y cambié el archivo wp-config.php para que apunte a la nueva base de datos.

Después de ejecutar SQL para cambiar los registros de la base de datos, también cambié esta línea en el archivo wp-config.php:

/** Activando WordPress MU, nuevo en 3.0 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' ); // <- Cambio esta línea
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Cambiado a:

define( 'DOMAIN_CURRENT_SITE', 'staging.example.com' ); // <- ahora cambiado

Cuando cargo http://staging.example.com, obtengo... Error estableciendo la conexión con la base de datos!

He revisado y comprobado tres veces el nombre de usuario y la contraseña, me aseguré de que el usuario tiene todos los privilegios en la nueva base de datos de staging, y he dejado el DBHOST como 'localhost' (aunque cambiarlo a staging.example.com tampoco ayudó).

¿Por qué fallaría la conexión a la base de datos? ¿Alguien? (Gracias por su ayuda de antemano.)

Nota: http://example.com está funcionando bien con configuraciones de conexión a la base de datos muy similares, solo que con una base de datos diferente, así que no es un problema de que el servidor de base de datos esté caído.

3
Comentarios

Mmm. ¿Nadie, eh? Definitivamente es un error extraño.

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

Tengo el mismo error al intentar hacer una migración en red de Wordpress in-situ - sin cambiar de host

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

Vale. He rastreado varios modos de fallo y he hecho una entrada en el blog sobre ellos: 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
Todas las respuestas a la pregunta 4
3
15

Lo resolví & funcionó :)

En la tabla wp_blogs,

La estructura anterior era:

Dominio: localhost/smart_facility_linux
Ruta: /

Pero lo cambié para que funcione de la siguiente manera:

Para el sitio principal:

Dominio: localhost
Ruta: /smart_facility_linux/

Para el sub sitio 1 (cualquier sub sitio bajo el sitio principal, solo pongo un ejemplo):

Dominio: localhost
Ruta: /smart_facility_linux/subsite1/
17 abr 2015 13:33:03
Comentarios

Desafortunadamente no funcionó para mí. Este es un ejemplo perfecto de lo estúpido que es usar rutas absolutas en la base de datos para WP.

Pegues Pegues
13 dic 2019 18:54:26

@Pegues funcionó para más de 10 personas aquí :)

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

Me alegra que haya funcionado para otros. Esto no funciona para mucha gente, y según lo que he investigado es porque hay una diferencia en los valores de la base de datos al cambiar de subdominio a subdirectorio. Y respecto a mi comentario inicial, el uso de rutas absolutas no es sabio por parte de WP. Nunca lo ha sido, y es la causa de tantos problemas. Además, configurar un flujo de trabajo adecuado con una canalización de CI/CD no es realmente posible a nivel empresarial.

Pegues Pegues
16 dic 2019 19:59:48
0

Un pensamiento: cuando voy a www.example.com/staging/wp-admin, automáticamente me redirige a www.example.com/wp-admin

¿Podría el redireccionamiento de staging.example.com a example.com/staging estar en conflicto con la instalación existente?

ACTUALIZACIÓN: parece que podría estar relacionado con problemas en el archivo .htaccess y referencias complicadas de dominios en la base de datos

Del WP Codex:

Mover WordPress Multisitio

Multisitio es mucho más complicado de mover, ya que la base de datos contiene múltiples referencias al nombre del servidor así como a las ubicaciones de las carpetas.

La mejor manera de mover Multisitio es mover los archivos, editar el .htaccess y wp-config.php (si el nombre de la carpeta que contiene Multisitio ha cambiado), y luego editar manualmente la base de datos. Busca todas las instancias de tu nombre de dominio y cámbialas según sea necesario. Este paso aún no puede automatizarse fácilmente. Si estás moviendo Multisitio de una carpeta a otra, necesitarás asegurarte de editar las entradas wp_blogs para cambiar correctamente el nombre de la carpeta.

20 jul 2011 00:18:42
4

Realmente solo hay una manera sencilla de transferir un dominio o alojamiento que he encontrado. Funciona perfectamente para mí en instalaciones individuales y multisitio.

  1. Exporta tu base de datos a un archivo .sql. (Yo uso PHPMyAdmin para esto)
  2. Crea una copia nueva del archivo para editar con un nombre ligeramente diferente.
  3. Abre el archivo en tu editor de texto preferido (por ejemplo, gedit)
  4. Ejecuta buscar/reemplazar en el dominio Y la ruta absoluta (/home/usuario/public_html/ a /home/usuario/public_html/) de producción a desarrollo.
  5. Guarda el archivo.
  6. Copia toda la instalación a tu directorio de desarrollo.
  7. Añade la siguiente línea a tu archivo wp-config.php:

    define('RELOCATE',true);

  8. Inicia sesión y guarda la configuración de enlaces permanentes.

  9. Elimina la regla define que añadiste a tu wp-config.php.

22 jul 2011 13:49:34
Comentarios

Eso funciona bien, excepto si terminas reemplazando una cadena en datos serializados, como un widget o una opción del tema, con una cadena de diferente longitud. Los datos serializados se ven así - 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: las longitudes 76 y 70 ya no corresponden a las cadenas mostradas - edité los detalles de mi sitio y no llevé un registro del nuevo conteo de caracteres.) La única solución para eso es actualizar manualmente los conteos - o mantener la misma longitud del dominio de staging.

marfarma marfarma
25 jul 2011 21:12:59

También reemplacé tt con xx para que las URLs no se obscurecieran -- no podías ver la diferencia entre ellas.

marfarma marfarma
25 jul 2011 21:15:27

Es bueno saberlo. Esto significa que al menos deberíamos tomarnos el tiempo para revisar todas las entradas a medida que se encuentran y reemplazan en lugar de reemplazar todo de una vez.

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

Puedes usar este script para buscar/reemplazar datos serializados: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Costa Costa
14 oct 2014 03:56:24
0

Esto funcionó para mí.

  1. Comprime todos los archivos en un ZIP
  2. Descarga la base de datos
  3. Sube los archivos al nuevo servidor
  4. Edita la base de datos en cualquier editor (yo usé Notepad++)
  5. Reemplaza domain.com con newdomain.com
  6. Sube la base de datos al nuevo servidor
  7. Inicia sesión y ¡a disfrutar!

Nota: Recuerda cambiar el nombre del dominio dentro de config.php. Además, copia el archivo .htaccess al nuevo servidor. Esto es para una instalación básica de WordPress Multisite con plugins mínimos. Intenta hacer una copia de seguridad primero.

28 jul 2021 23:58:32