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

11

Aquí está mi configuración. Tengo una instancia multisitio ejecutándose en http://example.com , y quiero hacer desarrollo y puesta en escena. Mover una instancia de WP multisitio existente a localhost es una pesadilla, por lo que voy a hacer dev en una ubicación de preparación.

Configuré http://staging.example.com para apuntar al directorio / public_html / staging / de la cuenta de alojamiento, y copié todos los archivos WP de mi raíz en el directorio / staging /. También copié los archivos de la base de datos (volcado de 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 cambio esta línea en el archivo 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 );

Cambiado a:

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

Cuando cargo http://staging.example.com , me sale ... Error establishing database connection!

Verifiqué y verifiqué tres veces el nombre de usuario y la contraseña, me aseguré de que el usuario tuviera todos los privilegios en la nueva base de datos provisional, y dejé el DBHOST como 'localhost' (aunque cambiarlo a staging.example.com no ayuda, tampoco).

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

NB: http://example.com funciona bien con configuraciones de conexión db muy similares, solo con una base de datos diferente, por lo que no es un problema que el servidor de la base de datos esté inactivo.

Jason Rhodes
fuente
Hmm Nadie, eh? Es un error extraño, seguro.
Jason Rhodes
Tengo el mismo error al intentar realizar la migración de Wordpress Network en el lugar: no se movió ningún host
Mikko Ohtamaa
Okay. Rastreé varios modos de falla e hice una publicación en el blog de ellos: opensourcehacker.com/2011/08/22/…
Mikko Ohtamaa

Respuestas:

2

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

¿Podría la redirección 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 de .htaccess y referencias de dominio complicadas 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 tiene múltiples referencias al nombre del servidor, así como a las ubicaciones de las carpetas.

La mejor manera de mover Multisite es mover los archivos, editar .htaccess y wp-config.php (si cambió el nombre de la carpeta que contiene Multisite), y luego editar manualmente la base de datos. Busque todas las instancias de su nombre de dominio y cámbielas según sea necesario. Este paso aún no se puede automatizar fácilmente. Si está moviendo Multisitio de una carpeta a otra, deberá asegurarse de editar las entradas de wp_blogs para cambiar el nombre de la carpeta correctamente.

timshutes
fuente
11

Lo resolví y funcionó :)

En la wp_blogsmesa,

Antigua estructura era

Domain : localhost/smart_facility_linux
Path : /

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

Para el sitio raíz:

Domain : localhost
Path : /smart_facility_linux/

Para el sitio secundario 1 (cualquier subsitio en el sitio principal, acabo de dar un ejemplo):

Domain : localhost
Path : /smart_facility_linux/subsite1/
Pratik
fuente
Lamentablemente no funcionó para mí. Este es un ejemplo perfecto de la estupidez de usar rutas absolutas en la base de datos para WP.
Pegues
@Pegues funcionó para más de 10 personas aquí :)
Pratik
1
Estoy feliz de que funcionó para otros. Esto no funciona para muchas personas, y por lo que he investigado es porque hay una diferencia en los valores de db al cambiar de subdominio a subdirectorio. Y para mi comentario inicial, el uso de rutas absolutas no es sabio para WP. Nunca lo ha sido, y es la causa de tantos problemas. Y configurar un flujo de trabajo adecuado con la canalización de CI / CD no es realmente posible a nivel empresarial.
Pegues
2

Realmente solo he encontrado una forma de hacer una transferencia fácil de dominio o host. Funciona perfectamente para mí en instalaciones individuales y multisitio.

  1. Exporte su base de datos a un archivo .sql. (Yo uso PHPMyAdmin para esto)
  2. Cree una nueva copia del archivo para editar con un nombre ligeramente diferente.
  3. Abra el archivo en su editor de texto preferido> (gedit por ejemplo)
  4. Ejecute una búsqueda / reemplazo en el dominio Y la ruta absoluta (/ home / username / public_html / to / home / username / public_html /) desde la producción hasta el desarrollador.
  5. Guarda el archivo.
  6. Copie toda la instalación a su directorio de desarrollo.
  7. Agregue la siguiente línea a su archivo wp-config.php:

    define ('RELOCATE', verdadero);

  8. Inicie sesión y guarde su configuración de enlaces permanentes.

  9. Elimina la regla de definición que pones en tu wp-config.php.

Jeff Sebring
fuente
1
Eso funciona bien, excepto si termina reemplazando una cadena en datos serializados, como una opción de widget o tema, con una cadena con 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 presentadas, edité los detalles de mi sitio y no hice un seguimiento del nuevo recuento de caracteres). La única solución para eso es para actualizar manualmente los recuentos, o mantener la longitud del dominio provisional igual.
marfarma
También reemplacé tt con xx para que las URL no se oscurecieran; no se podía ver la diferencia entre ellas.
marfarma
Es bueno saberlo. Esto significa que al menos deberíamos tomar el tiempo para revisar todas las entradas a medida que se encuentran y se reemplazan en lugar de reemplazar todas.
Jeff Sebring
1
Puede usar este script para buscar / reemplazar datos serializados: interconnectit.com/products/…
Costa