"Il database di origine non contiene una versione Drupal riconoscibile."


9

Ho installato due siti Drupal nel mio ambiente locale Ubuntu 15.10 Apache2 (2.4.12): uno è una nuova installazione di Drupal 8 e il secondo è una copia di un sito di lavoro esistente costruito con Drupal 7 (che è principalmente moduli core basato, molto umile per mezzo di pagine). Entrambi i siti funzionano senza problemi, ovunque.

Il mio obiettivo è innanzitutto quello di aggiornare il sito Drupal 7 a Drupal 8. Ho fatto tutte le fasi preliminari come la configurazione delle stesse lingue, Mantenere il minimo per mezzo di moduli (disinstallando tutti i moduli nel sito D7 che potrei facilmente riportare dopo l'aggiornamento ), assicurandomi che gli stessi moduli siano installati in entrambi i siti, ecc. e ora voglio solo "Trascendere" (spero che sia un buon fraseggio) il mio sito Drupal 7 nel nuovo Drupal 8.

Per raggiungere il mio obiettivo ho installato il modulo Drupal Upgrade nel mio sito Drupal 8, sono andato su localhost / sitename / upgrade e ho compilato tutti i dettagli del sito Drupal 7.

Quando ho fatto clic sul pulsante "Revisiona aggiornamento" ho ricevuto l'errore:

Il database di origine non contiene una versione Drupal riconoscibile.

Ho cercato su Google questo errore come una frase esatta ("Errore") e ho trovato pochissimi risultati; Molti di loro mi sembrano richiedere una conoscenza di programmazione PHP che ho ancora acquisito, quindi non riesco a determinare se l'errore è dovuto a un bug (soprattutto perché questo modulo è ancora in fase di sviluppo pesante) o a causa del mio errore in comprensione del concetto \ funzionalità di questo modulo.

  1. Quali sono le ragioni per cui il modulo di aggiornamento D8 Drupal non "gradirà" il database D7 che ho fornito? Soprattutto mentre il sito Drupal 7 funziona bene sia online che localmente.

  2. La migrazione sarebbe un'alternativa decente per l'aggiornamento, se l'aggiornamento non fosse possibile per qualsiasi motivo? In tal caso, qual è la migliore soluzione più semplice a cui potresti pensare per la migrazione?

inserisci qui la descrizione dell'immagine

Sono andato su /var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php e ho fatto:

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

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

Che ha ottenuto questo errore nella parte superiore dello schermo.

inserisci qui la descrizione dell'immagine


1
Tutto quello che posso vedere è che non gli piace che quel database contenga un'installazione di Drupal 7, proprio come dice l'errore. Qualcosa deve essere sbagliato nella configurazione o non è stato importato dove previsto.
Berdir,

Perché non piace il DB? Il sito D7 con questo DB funziona abbastanza bene senza alcun problema ...

1
Oh e @Berdir per "configurazione" intendi la configurazione nel modulo di aggiornamento Drupal nel sito D8? Ero sicuro che i dettagli che ho inserito dove tutto ciò di cui avevo bisogno, controllerò se mi sono perso qualcosa ... Pensi che mi sia perso qualcosa? ...

Hai già provato 127.0.0.1 invece localhost? (Dato che forse non arriva affatto a un database con la tua attuale configurazione di aggiornamento)
leymannx

Scusa, penso di aver capito ... Puoi per favore riformulare ciò che hai scritto? Molte grazie!!!

Risposte:


4

In questa fase, non penso che ci sia simpleun'opzione per l'aggiornamento da 7 a 8. Come puoi vedere nella nota di rilascio:

Una volta che sei pronto, Drupal 8 core include anche il modulo Migrate per aggiornare direttamente i siti Drupal 7 e 6 esistenti a Drupal 8. Migrare è contrassegnato come "sperimentale" in Drupal 8.0.0, ma sarà completamente supportato in una prossima versione. https://www.drupal.org/news/drupal-8.0.0-released

Un po 'tecnico dietro le quinte: dalla versione 7 alla 8, mantengono lo stesso concetto durante la costruzione del sito (come nodo, entità, permesso, viste ...) ma non il nucleo. Direi: hanno cambiato tutto in OOP, componente Symfony, architettura ... Quindi non c'è modo per il upgradetuo sito drupal direttamente dalla versione decente a 8.0, devi farlo migrate. Ecco come migratingdovrebbe apparire il processo:

  1. Ricrea il sito con la stessa funzionalità sul tuo sito d7.
  2. Ricrea il tema (usando il modello di ramoscello)
  3. Migra i contenuti

Il costo di questo processo è (purtroppo) lo stesso per ricreare un nuovo sito o più. Con il n. 3, dai un'occhiata a questo articolo di Fase 2: https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/


Ho iniziato a costruire manualmente un sito riscritto in Drupal 8 ... È davvero positivo che molti dei moduli che ho usato in D7 siano andati nel nocciolo; Spero che al momento in cui migrerò a Drupal 9, la tecnologia di migrazione raggiunga uno stato in cui possa essere più parziale, fatto in contesti diversi, dati in-page e metadati del nodo, reindirizzamenti del nodo, file, viste, Pannelli, tutto ciò che è proprio il più possibile ... suddividere il processo in diverse fasi (quando è possibile iniziare da ogni possibile fase ogni volta che lo si desidera) è qualcosa che spero di ...

Mi dispiace non averlo fatto: ho appena pubblicato la mia risposta di seguito con dettagli specifici su ciò che molto probabilmente è accaduto, per favore vedi. La generosità è con te, ovviamente.

2

Il tuo messaggio di errore è una corrispondenza esatta con la stringa contenuta nella riga all'indirizzo http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40 nel codice del modulo "Drupal Upgrade" ( https: / /www.drupal.org/project/migrate_upgrade ).

Mostra che non si tratta di un bug, ma di una "eccezione generata". Osservando le 3 righe precedenti di quel codice, penso che sia solo un problema nell'impostazione della connessione.

Forse questo aiuta anche:

  • una citazione dal numero https://www.drupal.org/node/2628440 (commento n. 3):

    Per verificare che il database di origine sia un database Drupal valido e per determinare la versione del database, il processo di aggiornamento esamina la tabella "di sistema": quella tabella è presente nel database specificato nel modulo? L'installazione di Drupal in quel database ha il prefisso (e in tal caso, hai inserito il prefisso nella sezione "Opzioni avanzate" del modulo)? ".

  • Seguito dal commento n. 4 nello stesso numero: "Fornire il prefisso delle tabelle ha risolto il problema".

E, naturalmente, il commento di benjy (grazie!) Aiuterebbe anche a ottenere maggiori dettagli sull'errore reale in cui ti imbatti , ad esempio:

potresti stampare $ e-> getException () qui cgit.drupalcode.org/migrate_upgrade/tree/src/… e poi vedrai l'errore DOP

È possibile (temporaneamente) aggiungere tale stampa tra le righe 122 e 123 nel codice mostrato tramite il collegamento.


Come ho detto nella domanda, non ho le conoscenze di PHP per capire qual è il problema da quel vasto codice PHP ... Puoi per favore modificare la domanda e spiegare in parole semplici cosa è in realtà questa "eccezione generata" e cosa è il modo più semplice per gestirlo? Per favore, il più semplice possibile, sto iniziando ad assaggiare PHP.

@benos Significa semplicemente che molto probabilmente qualcosa di molto banale non è configurato correttamente nelle impostazioni di migrazione. Un errore di battitura, una password errata, un URL errato. Qualcosa del genere.
leymannx,

@benos, puoi stampare $ e-> getException () qui cgit.drupalcode.org/migrate_upgrade/tree/src/… e poi vedrai l'errore DOP.
Benjy,

@leymannx Se ho creato 2 DB localmente (uno per D7 uno per D8), solo quello di D7 dovrebbe avere esattamente gli stessi dettagli è il sito online che voglio aggiornare, giusto?

@leymannx Ho ricreato tutto. I dati D7 locali sono esattamente gli stessi nel sito D7 online: la cartella del sito è la stessa; Il nome DB e il nome utente sono uguali e le password sono uguali; Ho anche aggiunto il prefisso e anche se tutto sembra essere a posto, ottengo ancora lo stesso errore.

0

Nel momento in cui forzate il codebase a saltare la lettura di {system}, muore senza trovare la tabella del database successiva, {field_config_instance}. In altre parole: non sta leggendo il database D7. Forse prova a leggere quello D8, forse qualcos'altro, come potremmo saperlo? Molto probabilmente stai inserendo una configurazione DB errata (diciamo, i due siti si trovano su server diversi con server mysql essendo localhost su entrambi ma localhost non è lo stesso server). Ho appena controllato il modulo contrib di Migrate Upgrade e il codice del modulo di migrazione principale entrambi e sarebbe estremamente sorprendente se ci fosse un bug relativo al prefisso poiché entrambi gestiscono un intero array di impostazioni del database, non pezzo per pezzo.

È impossibile dire senza avere accesso alle tue informazioni su come risolvere questo problema. Scusate. Se potessi, voterei per chiuderlo, ma dato che c'è una taglia, non posso. Non possiamo aiutarti e questa domanda non aiuterà gli altri. L'unico aiuto possibile è questo: leggi e capisci il tuo file di impostazioni di Drupal 7 e dai le giuste credenziali al modulo Migrate Upgrade (L'enorme quantità di commenti sta già dimostrando che non sta andando da nessuna parte.)

Una possibile soluzione a lungo termine includerebbe una funzione nel modulo contrib in cui le persone possono caricare i loro settings.php e quindi potremmo provare a usarlo. Questo è estremamente fragile ma merita un colpo immagino. Quando qualcuno avrà il tempo di codificarlo ...

Non ho idea del perché le persone abbiano votato così pesantemente. C'è qualcun altro che ha lo stesso problema?


0

È passato molto tempo da quando l'ho pubblicato, ma penso di sapere ora qual era il problema:

Ho lasciato 2-3 moduli installati, che (allora) pensavo fossero "così semplici", quindi ero sicuro che avessero un percorso di migrazione proprio come tutti i moduli principali.

Questi erano, se ricordo bene: Metatag e Redirect (si passa da D7 Globalredirect & Redirect a Redirect in Drupal 8).

Non solo li ho lasciati nel sito D7, ma li ho anche installati nel D8, quindi nessuna delle versioni del mio sito era solo core, se necessario.

È stata la mia prima migrazione e ho fatto quell'errore come matricola totale al progetto. Ero davvero convinto che "non può essere" che questi moduli non abbiano un percorso di migrazione (e quando ci pensate, dovrebbero davvero avere), ma poi ho scoperto che in effetti, di solito solo i moduli core hanno e niente altrimenti dovrebbe avere un percorso di migrazione personalizzato o contrib.

Solo così sai --- Questi e altri moduli hanno percorsi di migrazione contrib che è possibile utilizzare correggendoli con questo percorso di migrazione (lo "immetti" nel modulo con il percorso).

Ad ogni modo, non era il caso per me allora ed ero sicuro che venisse fornito con il sistema ...

Avevo dolorosamente sbagliato e questo mi sembra l'unico motivo per cui la migrazione sopra non è riuscita; Ho persino rafforzato questa ipotesi con un piccolo esperimento che ho fatto prima della mia ultima migrazione di successo circa 2 mesi fa.


0

Una volta ho ricevuto quel messaggio di errore. Si è rivelato essere $ db_prefix impostato da me "drupal_". Dovresti metterlo in opzioni avanzate.

Saluti, Carlos Aleman

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.