"La base de datos de origen no contiene una versión reconocible de Drupal".


9

He instalado dos sitios de Drupal en mi entorno local de escritorio Ubuntu 15.10 Apache2 (2.4.12): uno es una instalación nueva de Drupal 8 y el segundo es una copia de un sitio de trabajo existente construido con Drupal 7 (que es principalmente módulos de núcleo basado, muy humilde por medio de páginas). Ambos sitios funcionan bien sin ningún problema, en cualquier lugar.

Mi objetivo es, en primer lugar, actualizar el sitio de Drupal 7 a Drupal 8. Hice todas las etapas preliminares, como configurar los mismos idiomas. ), asegurándome de que los mismos módulos estén instalados en ambos sitios, etc., y ahora solo quiero "Transcender" (espero que sea un buen fraseo) mi sitio Drupal 7 en el nuevo Drupal 8.

Para lograr mi objetivo, instalé el módulo Drupal Upgrade en mi sitio Drupal 8, fui a localhost / sitename / upgrade y completé todos los detalles del sitio Drupal 7.

Cuando hice clic en el botón "Revisar actualización" recibí el error:

La base de datos de origen no contiene una versión reconocible de Drupal.

Busqué en Google este error como una frase exacta ("Error") y encontré muy pocos resultados; La mayoría de ellos me parecen requerir un conocimiento de programación PHP que aún he adquirido, por lo que no puedo determinar si el error se debe a un error (especialmente porque este módulo todavía está en desarrollo) o debido a mi error en entendiendo el concepto \ funcionalidad de este módulo.

  1. ¿Qué razones hay para que el módulo de actualización D8 Drupal no "parezca" a la base de datos D7 que proporcioné? Especialmente mientras el sitio de Drupal 7 funciona bien tanto en línea como localmente.

  2. ¿Sería la migración una alternativa decente para la actualización, si la actualización no es posible por alguna razón? Si es así, ¿cuál es la mejor solución más simple que podría pensar para la migración?

ingrese la descripción de la imagen aquí

Fui a /var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php e hice:

-- return $version_string ? substr($version_string, 0, 1) : FALSE;

++ return 7;
++ return $version_string ? substr($version_string, 0, 1) : FALSE;

Que obtuvo este error en la parte superior de la pantalla.

ingrese la descripción de la imagen aquí


1
Todo lo que puedo ver es que no le gusta que la base de datos contenga una instalación de Drupal 7, como dice el error. Algo tiene que estar mal en su configuración o no lo importó donde lo esperaba.
Berdir

¿Por qué no le gustará el DB? El sitio D7 con este DB funciona bastante bien sin ningún problema ...

1
Ah, y @ Berdir por "configuración" te refieres a la conf en el módulo de actualización de Drupal en el sitio D8? Estaba seguro de los detalles llené donde toda necesidad I, voy a ver si me he perdido nada ... Es que me he perdido algo ...?

¿Has probado 127.0.0.1 en lugar de localhost ya? (Como tal vez realmente no llegue a una base de datos con su configuración de actualización actual)
leymannx

Lo siento, creo que entendí ... ¿Puedes reformular lo que escribiste? ¡¡¡Muchas gracias!!!

Respuestas:


4

En esta etapa, no creo que haya una simpleopción para actualizar de 7 a 8. Como puede ver en la nota de lanzamiento:

Una vez que esté listo, Drupal 8 core también incluye el módulo Migrate para actualizar los sitios existentes de Drupal 7 y 6 a Drupal 8 directamente. Migrate está marcado como "experimental" en Drupal 8.0.0, pero será totalmente compatible en una próxima versión. https://www.drupal.org/news/drupal-8.0.0-released

Un poco técnico detrás de escena: de la versión 7 a la 8, mantienen el mismo concepto al construir el sitio (como nodo, entidad, permiso, vistas ...) pero no el núcleo. Yo diría: cambiaron todo a OOP, componente de Symfony, arquitectura ... Por lo tanto, no hay forma de upgradeacceder directamente a su sitio drupal desde una versión decente a 8.0, tiene que hacerlo migrate. Así es como migratingdebería verse el proceso:

  1. Recree el sitio con la misma funcionalidad que su sitio d7.
  2. Recrea el tema (usando la plantilla de ramita)
  3. Migrar contenido sobre

El costo de este proceso es (desafortunadamente) el mismo para recrear un sitio nuevo o más. Con el no 3, eche un vistazo a este artículo de la Fase 2: https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/


He comenzado a construir manualmente un sitio reescrito en Drupal 8 ... Es bueno, de hecho, que muchos de los módulos que utilicé en D7 entraron en el núcleo; Espero que en el momento en que migre a Drupal 9, la tecnología de migración llegue a un estado en el que pueda ser más parcial, en diferentes contextos, datos en la página y metadatos del nodo, redirecciones de nodo, archivos, vistas, Paneles, todo lo que sea propio lo más posible ... dividir el proceso en diferentes etapas (cuando puede comenzar desde cada etapa posible cuando lo desee) es algo que espero ...

Lamento no aplicar: acabo de publicar mi respuesta a continuación con detalles específicos sobre lo que probablemente sucedió, por favor vea. La recompensa está contigo, por supuesto.

2

Su mensaje de error es una coincidencia exacta con la cadena contenida en la línea en http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40 dentro del código del módulo "Actualización Drupal" ( https: / /www.drupal.org/project/migrate_upgrade ).

Muestra que no es un error, sino una "excepción lanzada". Mirando las 3 líneas anteriores de ese código, creo que es solo un problema al configurar la conexión.

Quizás esto ayude también:

  • una cita del número https://www.drupal.org/node/2628440 (comentario nr 3):

    Para verificar que la base de datos de origen es una base de datos Drupal válida y para determinar la versión de la base de datos, el proceso de actualización examina la tabla 'sistema': ¿está esa tabla presente en la base de datos que especificó en el formulario? ¿La instalación de Drupal en esa base de datos tiene el prefijo (y si es así, ¿ingresó el prefijo en la sección "Opciones avanzadas" del formulario)?

  • Seguido del comentario n ° 4 en el mismo problema: "Proporcionar el prefijo de tablas resolvió el problema".

Y, por supuesto, el comentario de benjy (¡gracias!) También ayudaría a obtener más detalles sobre el error real con el que se está encontrando, es decir:

puede imprimir $ e-> getException () aquí cgit.drupalcode.org/migrate_upgrade/tree/src/… y luego verá el error PDO

Puede agregar (temporalmente) dicha impresión entre las líneas 122 y 123 en el código que se muestra a través del enlace.


Como mencioné en la pregunta, no tengo el conocimiento de PHP para entender cuál es el problema de ese vasto código PHP ... ¿Puede editar la pregunta y explicar en palabras simples qué es realmente esta "Excepción lanzada" y qué es la forma escalonada de manejarlo? Por favor, tan simple como puedas, estoy empezando a probar PHP.

@benos Simplemente significa que muy probablemente algo muy trivial esté mal configurado en su configuración de migración. Un error tipográfico, una contraseña incorrecta, una URL incorrecta. Algo como eso.
leymannx

@benos, puede imprimir $ e-> getException () aquí cgit.drupalcode.org/migrate_upgrade/tree/src/… y luego verá el error PDO.
benjy

@leymannx Si he creado 2 bases de datos localmente (una para D7 y otra para D8), solo la de D7 debería tener exactamente los mismos detalles en el sitio en línea que quiero actualizar, ¿verdad?

@leymannx He recreado todo. Los datos locales de D7 son exactamente los mismos en el sitio D7 en línea: la carpeta del sitio es la misma; El nombre de la base de datos y el nombre de usuario son los mismos, y las contraseñas son las mismas; También agregué el prefijo y, aunque todo parece estar en su lugar, sigo teniendo el mismo error.

0

En el momento en que fuerza a la base de código a omitir la lectura {system}, muere al no encontrar la siguiente tabla de base de datos, {field_config_instance}. En otras palabras: no está leyendo su base de datos D7. Quizás intenta leer el D8, quizás algo totalmente diferente, ¿cómo podríamos saberlo? Es más que probable que esté ingresando una configuración de base de datos incorrecta (por ejemplo, los dos sitios están en servidores diferentes con el servidor mysql siendo localhost en ambos, pero localhost no es el mismo servidor). Acabo de comprobar el módulo contrib Migrate Upgrade y el código del módulo central migrate, y sería extremadamente sorprendente si hubiera un error relacionado con el prefijo, ya que ambos manejan una matriz de configuración de base de datos completa, no pieza por pieza.

Es imposible decir sin tener acceso a su infra sobre cómo solucionar esto. Lo siento. Si pudiera votaría para cerrarlo, pero como hay una recompensa, no puedo. No podemos ayudarlo y esta pregunta no ayudará a otros. La única ayuda posible es esta: lea y comprenda su archivo de configuración de Drupal 7 y proporcione las credenciales correctas al módulo Migrar actualización (la gran cantidad de comentarios ya muestran que esto no va a ninguna parte).

Una posible solución a más largo plazo incluiría una función en el módulo contrib donde las personas pueden cargar su settings.php y luego podríamos intentar usarlo. Esto es extremadamente frágil pero vale la pena intentarlo, supongo. Cuando alguien tendrá tiempo de codificarlo ...

No tengo idea de por qué la gente votó tanto por esto. ¿Hay alguien más que tenga el mismo problema?


0

Ha pasado mucho tiempo desde que publiqué esto, pero creo que ahora sé cuál era el problema:

Dejé 2-3 módulos instalados, lo que (entonces) pensé que era "tan básico", así que estaba seguro de que tienen una ruta de migración al igual que todos los módulos principales.

Estos fueron, si no recuerdo mal: Metatag y Redirect (te mueves de D7 Globalredirect & Redirect a solo Redirect en Drupal 8).

No solo los dejé en el sitio D7, también los instalé en el D8, por lo que ninguna de las versiones de mi sitio era solo de núcleo, según fuera necesario.

Fue mi primera migración y cometí ese error como estudiantes de primer año del proyecto. Estaba realmente convencido de que "no puede ser" que estos módulos no tengan una ruta de migración (y cuando lo piensas, realmente deberían tener), pero luego descubrí que, de hecho, generalmente solo los módulos centrales tienen y cualquier cosa else debería tener una ruta de migración personalizada o contrib.

Para que lo sepas: estos y otros módulos tienen rutas de migración contrib que puedes usar parchándolas con esta ruta de migración (la "inyectas" en el módulo con la ruta).

De todos modos, no era el caso para mí en ese entonces y estaba seguro de que viene con el sistema ...

Estaba terriblemente equivocado y esta me parece la única razón por la cual falló la migración anterior; Incluso reforcé esta suposición con un pequeño experimento que hice antes de mi última migración exitosa hace aproximadamente 2 meses.


0

Una vez que recibí ese mensaje de error. Resultó ser el $ db_prefix establecido por mí "drupal_". Deberías poner eso en opciones avanzadas.

Saludos, Carlos Aleman

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.