Saya telah menginstal dua situs Drupal di desktop Ubuntu lokal saya 15.10 Apache2 (2.4.12) lingkungan: Satu adalah instalasi baru dari Drupal 8 dan yang kedua adalah salinan dari situs kerja yang ada yang dibangun dengan Drupal 7 (yang sebagian besar adalah modul inti berbasis, sangat rendah hati melalui halaman). Kedua situs berfungsi dengan baik tanpa masalah, di mana saja.
Tujuan saya adalah yang pertama dan terpenting meningkatkan situs Drupal 7 ke Drupal 8. Saya melakukan semua tahap awal seperti mengkonfigurasi bahasa yang sama, Tetap seminimal mungkin dengan modul (menghapus modul apa pun di situs D7 yang dapat dengan mudah saya bawa kembali setelah Peningkatan) ), memastikan modul yang sama dipasang di kedua situs, dll, dan sekarang saya hanya ingin "Transcend" (harap ini ungkapan yang bagus) situs Drupal 7 saya ke Drupal 8 yang baru.
Untuk mencapai tujuan saya, saya telah menginstal modul Upgrade Drupal di situs Drupal 8 saya, pergi ke localhost / sitename / upgrade, dan mengisi semua detail dari situs Drupal 7.
Ketika saya mengklik tombol "Tinjau peningkatan" saya mendapat kesalahan:
Sumber basis data tidak mengandung versi Drupal yang dikenali.
Saya telah meng-google error ini sebagai frasa persis ("Kesalahan") dan menemukan sangat sedikit hasil; Sebagian besar dari mereka tampaknya membutuhkan pengetahuan pemrograman PHP yang belum saya peroleh, jadi saya tidak dapat menentukan apakah kesalahan itu disebabkan oleh bug (terutama karena modul ini masih dalam pengembangan) atau karena kesalahan saya dalam memahami konsep \ fungsionalitas modul ini.
Apa alasannya mengapa modul upgrade D8 Drupal tidak "menyukai" database D7 yang saya berikan? Terutama ketika situs Drupal 7 bekerja dengan baik baik online maupun lokal.
Apakah migrasi akan menjadi alternatif yang layak untuk peningkatan, jika peningkatan tidak dimungkinkan karena alasan apa pun? Jika demikian, apa solusi paling sederhana terbaik yang dapat Anda pikirkan untuk migrasi?
Saya pergi ke /var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.php dan melakukan:
-- return $version_string ? substr($version_string, 0, 1) : FALSE;
++ return 7;
++ return $version_string ? substr($version_string, 0, 1) : FALSE;
Daripada mendapatkan kesalahan ini di bagian atas layar.
Jawaban:
Pada tahap ini, saya tidak berpikir ada
simple
opsi untuk meningkatkan dari 7 menjadi 8. Seperti yang Anda lihat pada catatan rilis:Sedikit teknis di belakang layar: Dari versi 7 hingga 8, mereka mempertahankan konsep yang sama ketika membangun situs (seperti simpul, entitas, izin, tampilan ...) tetapi bukan intinya. Saya akan mengatakan: mereka mengubah segalanya menjadi OOP, komponen Symfony, arsitektur ... Jadi tidak ada cara untuk
upgrade
situs drupal Anda langsung dari versi yang layak menjadi 8.0, Anda harusmigrate
. Beginilah tampilanmigrating
prosesnya:Biaya untuk proses ini (sayangnya) sama untuk membuat ulang situs baru atau lebih. Dengan no 3, lihat artikel ini pada Fase 2: https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/
sumber
Pesan kesalahan Anda benar-benar cocok dengan string yang terdapat pada baris di http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40 dalam kode modul "Peningkatan Drupal" ( https: / /www.drupal.org/project/migrate_upgrade ).
Ini menunjukkan bahwa itu bukan bug, melainkan "pengecualian yang dilemparkan". Melihat 3 baris sebelumnya dari kode itu, saya pikir itu hanya masalah dalam mengatur koneksi.
Mungkin ini membantu juga:
kutipan dari masalah https://www.drupal.org/node/2628440 (komentar nr 3):
Diikuti oleh komentar nr 4 dalam masalah yang sama: "Menyediakan awalan tabel 'memecahkan masalah."
Dan tentu saja, komentar dari benjy (terima kasih!) Juga akan membantu untuk mendapatkan rincian lebih lanjut tentang kesalahan aktual yang Anda alami , yaitu:
Anda dapat (sementara) menambahkan cetakan semacam itu di antara baris 122 dan 123 dalam kode yang ditunjukkan melalui tautan.
sumber
Saat Anda memaksa basis kode untuk melewati membaca {system} itu mati dengan tidak menemukan tabel database berikutnya, {field_config_instance}. Dengan kata lain: itu tidak membaca database D7 Anda. Mungkin ia mencoba membaca D8, mungkin sesuatu yang lain, bagaimana kita bisa tahu? Kemungkinan besar Anda memasukkan konfigurasi DB yang salah (katakanlah, kedua situs berada di server yang berbeda dengan server mysql menjadi localhost di keduanya tetapi localhost bukan server yang sama). Saya baru saja memeriksa modul contrib Upgrade Migrasi dan kode inti modul migrasi keduanya dan itu akan sangat mengejutkan jika akan ada bug yang berkaitan dengan awalan karena keduanya menangani seluruh array pengaturan database, bukan sepotong demi sepotong.
Tidak mungkin untuk mengatakan tanpa memiliki akses ke infra Anda tentang cara memperbaikinya. Maaf. Jika saya bisa, saya akan memilih untuk menutupnya tetapi karena ada hadiah, saya tidak bisa. Kami tidak dapat membantu Anda dan pertanyaan ini tidak akan membantu orang lain. Satu-satunya bantuan yang mungkin adalah ini: baca dan pahami file pengaturan Drupal 7 Anda dan berikan kredensial yang tepat ke modul Upgrade Migrasi (Banyak sekali komentar yang sudah menunjukkan bahwa ini tidak akan berhasil.)
Salah satu solusi jangka panjang yang mungkin akan mencakup fitur dalam modul contrib di mana orang dapat mengunggah settings.php mereka dan kemudian kita bisa mencoba menggunakannya. Ini sangat rapuh tetapi layak dicoba. Ketika seseorang akan punya waktu untuk kode itu ...
Saya tidak tahu mengapa orang sangat mendukung ini. Apakah ada orang lain yang memiliki masalah yang sama?
sumber
Banyak waktu telah berlalu sejak saya memposting ini tetapi saya pikir saya sekarang tahu apa masalahnya:
Saya membiarkan 2-3 modul terinstal, yang saya (kemudian) anggap "sangat mendasar" jadi saya yakin mereka memiliki jalur migrasi sama seperti semua modul inti.
Ini adalah, jika saya ingat dengan benar: Metatag dan Redirect (Anda berpindah dari D7 Globalredirect & Redirect ke Redirect saja di Drupal 8).
Tidak hanya saya meninggalkan ini di situs D7, saya juga menginstalnya di D8, jadi tidak ada versi situs saya yang hanya inti, sesuai kebutuhan.
Itu adalah migrasi pertama saya dan saya melakukan kesalahan itu sebagai siswa baru dalam proyek ini. Saya benar-benar yakin bahwa "tidak mungkin" bahwa modul-modul ini tidak akan memiliki jalur migrasi (dan ketika Anda memikirkannya, mereka benar-benar harus memilikinya), tetapi kemudian saya menemukan bahwa memang, biasanya hanya modul inti yang memiliki dan apa pun. lain harus memiliki jalur migrasi khusus atau kontrib.
Asal tahu saja --- Ini, dan modul-modul lain memang memiliki jalur migrasi contrib yang dapat Anda gunakan dengan menambalnya dengan jalur migrasi ini (Anda "menyuntikkan" ke dalam modul dengan jalur).
Bagaimanapun, itu tidak terjadi pada saya saat itu dan saya yakin itu datang dengan sistem ...
Saya salah besar dan ini menurut saya satu-satunya alasan mengapa migrasi di atas gagal; Saya bahkan memperkuat asumsi ini dengan percobaan kecil yang saya lakukan sebelum migrasi sukses terakhir saya sekitar 2 bulan yang lalu.
sumber
Setelah saya mendapat pesan kesalahan itu. Ternyata menjadi $ db_prefix yang saya set "drupal_". Anda harus meletakkannya di opsi lanjutan.
Salam, Carlos Aleman
sumber