web-dev-qa-db-ja.com

"ソースデータベースに認識可能なDrupalバージョンが含まれていません。"

2つのDrupalサイトをローカルUbuntuデスクトップ15.10 Apache2(2.4.12)環境にインストールしました。1つはDrupal 8の新規インストールで、2つ目はDrupal 7で構築された既存の作業サイトのコピー(ほとんどがコアモジュールベースで、ページによって非常に質素です)。どちらのサイトも問題なく、どこでも問題なく動作しています。

私の目的は何よりもまずDrupal 7サイトをDrupal 8.にアップグレードすることです。私は同じ言語を構成するなどの準備段階をすべて行いました。モジュール(アップグレード後に簡単に戻すことができるD7サイトのモジュールをアンインストールする)、同じモジュールが両方のサイトにインストールされていることを確認します。今、私は単に「超越」することを望んでいます(良い言い回しを願います) Drupal 7サイトに新しいDrupal 8サイト。

私の目的を達成するために、私は Drupal Upgrade モジュールを私のDrupal 8サイトにインストールし、localhost/sitename/upgradeに行き、すべての詳細を入力しましたDrupal 7サイト。

「アップグレードの確認」ボタンをクリックすると、エラーが発生しました。

ソースデータベースに認識可能なDrupalバージョンが含まれていません。

このエラーを完全に一致するフレーズ(「エラー」)としてググったところ、結果はほとんど見つかりませんでした。それらのほとんどは、私がまだ習得しているPHPプログラミング知識を必要とするようですので、エラーがバグによるものかどうか判断できません(特にこのモジュールがまだ重い開発)、またはこのモジュールの概念\機能を理解する上での私のミスが原因です。

  1. D8 Drupalアップグレードモジュールが私が提供したD7データベースに「似ていない」理由は何ですか?特にDrupal 7サイトがオンラインとローカル。

  2. 何らかの理由でアップグレードが不可能である場合、移行はアップグレードの適切な代替手段ですか?もしそうなら、あなたが移行のために考えることができる最も簡単なソリューションは何ですか?

enter image description here

私は/var/www/html/benia/modules/migrate_upgrade/src/MigrationCreationTrait.phpに行って次のようにしました:

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

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

画面の上部でこのエラーが発生したよりも。

enter image description here

9
JohnDoea

これを投稿してからかなりの時間が経過しましたが、何が問題だったのかがわかったと思います。

私は2-3個のモジュールをインストールしたままにしましたが、それは(とても)基本的であると考えたので、すべてのコアモジュールと同じように、それらに移行パスがあることを確認しました。

これらは、私が正しく覚えていれば、メタタグとリダイレクトでした(D7 Globalredirect&RedirectからDrupal 8でリダイレクトのみ)に移動します)。

これらをD7サイトに残しただけでなく、D8にもインストールしたため、必要に応じて、サイトのどのバージョンもコアのみでした。

それが私の最初の移行であり、私はプロジェクトの新入生としてその間違いをしました。これらのモジュールには移行パスがないことを「信じられない」と本当に確信していました(しかし、考えてみると、実際に移行する必要があります)。それ以外の場合は、カスタムまたはcontrib移行パスが必要です。

ちょうどあなたが知っている---これら、および他のモジュールには、この移行パスでパッチを適用することで使用できるcontrib移行パスがあります(パスでモジュールに「注入」します)。

とにかく、当時はそうではなく、システムに付属していると確信していました...

私は痛々しいほど間違っていました。これが、上記の移行が失敗した唯一の理由のようです。約2か月前に最後の移行が成功する前に行った小さな実験で、この仮定をさらに強化しました。

0
JohnDoea

この段階では、7から8にアップグレードするためのsimpleオプションはないと思います。リリースノートからわかるように、

準備ができたら、Drupal 8コアには、既存のDrupal 7および6サイトをDrupal Drupal 8.0.0では移行が「実験的」とマークされていますが、次のリリースでは完全にサポートされます。 https://www.drupal.org/news/ drupal-8.0.0-released

舞台裏で少し技術的:7から8までのバージョンでは、サイトを構築するときに同じ概念(ノード、エンティティ、権限、ビューなど)を維持しますが、コアは維持しません。私は言うでしょう:彼らはすべてをOOP、Symfonyコンポーネント、アーキテクチャに変更しました...したがって、upgradeあなたのdrupalサイトを適切なバージョンから8.0に直接変更する方法はありません。 to migratemigratingプロセスは次のようになります。

  1. D7サイトと同じ機能を持つサイトを再作成します。
  2. テーマを再作成します(twigテンプレートを使用)
  3. コンテンツを移行する

このプロセスのコストは、(残念ながら)新しいサイトを再作成する場合と同じです。 3番の場合は、フェーズ2のこの記事をご覧ください https://www.phase2technology.com/blog/upgrading-to-a-drupal-8-site/

4
trongdq

エラーメッセージは、 http://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40 の行に含まれる文字列と完全に一致します「Drupal Upgrade」モジュールのコード( https://www.drupal.org/project/migrate_upgrade )。

これはバグではなく、「例外がスローされる」ことを示しています。そのコードの前の3行を見ると、接続の設定に問題があるだけだと思います。

多分これはまた助けになります:

  • 問題からの引用 https://www.drupal.org/node/2628440 (comment nr 3):

    ソースデータベースが有効であることを確認するにはDrupalデータベースであり、データベースのバージョンを確認するには、アップグレードプロセスで 'system'テーブルを確認します。指定したデータベースにそのテーブルが存在しますDrupalインストールにプレフィックスが付いていますか(その場合、フォームの[詳細オプション]セクションにプレフィックスを入力しましたか?))。

  • 同じ問題のコメントnr 4が続く:「テーブルのプレフィックスを指定することで問題が解決しました。」.

そしてもちろん、 benjy (ありがとう!)からのコメントも、発生している実際のエラーの詳細を取得するのに役立ちます。

$ e-> getException()をここに出力できますcgit.drupalcode.org/migrate_upgrade/tree/src/…そして、PDOエラーが表示されます

リンクを介して表示されるコードの122と123行の間にこのような印刷を(一時的に)追加できます。

2
user51649

そのエラーメッセージが表示されたら。それは、私が "drupal_"によって設定した$ db_prefixであることがわかりました。あなたはそれを高度なオプションに入れるべきです。

今後ともよろしくお願いいたします。Carlos Aleman

0
Pedro Paramo

コードベースに{system}の読み取りをスキップさせると、次のデータベーステーブル{field_config_instance}が見つからずに終了します。つまり、D7データベースを読み取っていません。おそらくそれはD8の1つ、おそらくまったく別の何かを読み込もうとするでしょう。間違ったDB構成を入力している可能性が高いです(たとえば、2つのサイトは異なるサーバー上にあり、mysqlサーバーは両方ともlocalhostですが、localhostは同じサーバーではありません)。 Migrate Upgrade contribモジュールとコアのmigrateモジュールコードの両方を確認したところ、プレフィックスに関連するバグがあり、どちらもデータベースごとの配列ではなく配列全体を処理するため、非常に驚​​くべきことです。

これを修正する方法についてのインフラにアクセスできなければ、言うことは不可能です。ごめんなさい。投票できたら閉鎖するつもりですが、賞金があるためできません。私たちはあなたを助けることはできず、この質問は他の人を助けることはありません。唯一の可能なヘルプはこれです:nderstand your Drupal 7設定ファイルを読み取り、Migrate Upgradeモジュールに適切な資格情報を提供します(大量のコメントがすでに表示されています)これはどこにも行きません。)

考えられるより長期的な解決策の1つは、contribモジュールに、ユーザーがsettings.phpをアップロードできる機能を含めてから、それを使用してみることです。これは非常に壊れやすいですが、私は推測する価値があります。誰かがそれをコーディングする時間があるとき...

なぜ人々がこれをそれほど高く支持したのか私にはわからない。同じ問題を抱えている人は他にいますか?

0
user49