「ソースデータベースには、認識できるDrupalバージョンが含まれていません。」


9

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

私の目的は、何よりもまずDrupal 7サイトをDrupal 8にアップグレードすることです。同じ言語を構成するなど、すべての準備段階を行いました。モジュールを使用して最小限に抑えます(アップグレード後に簡単に戻すことができるD7サイトのモジュールをすべてアンインストールします) )、両方のサイトに同じモジュールがインストールされていることなどを確認します。今、私はDrupal 7サイトを新しいDrupal 8サイトに "トランセンド"(いいフレーズでいいと思います)したいだけです。

私の目標を達成するために、DrupalアップグレードモジュールをDrupal 8サイトにインストールし、localhost / sitename / upgradeに移動して、Drupal 7サイトのすべての詳細を入力しました。

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

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

このエラーを正確なフレーズ(「エラー」)としてグーグル検索したところ、結果はほとんど見つかりませんでした。それらのほとんどは、私がまだ習得しているPHPプログラミングの知識を必要とするようですので、エラーがバグによるものかどうか(特にこのモジュールがまだ開発中のため)か、私の間違いによるものかを判断できません。このモジュールの概念と機能を理解する。

  1. D8 Drupalアップグレードモジュールが、私が提供したD7データベースを「好き」にしない理由は何ですか?特に、Drupal 7サイトがオンラインでもローカルでも問題なく機能している間は。

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

ここに画像の説明を入力してください

私は/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;

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

ここに画像の説明を入力してください


1
エラーが言うように、私が見ることができるのは、データベースがDrupal 7インストールを含んでいるのが好きではないということだけです。構成に問題があるか、予期した場所にインポートしていません。
Berdir 2015

なぜそれはDBのようにならないのですか?このDBを備えたD7サイトは、問題がなくても十分に機能します...

1
ああ、@ Berdirは「構成」によって、D8サイトのDrupalアップグレードモジュールの設定を意味しますか?必要なすべての詳細を記入したと確信していたので、何か見落としがないか確認します...見落としていると思いますか?...

localhostの代わりに127.0.0.1をすでに試しましたか?(おそらく、現在のアップグレード構成ではデータベースに
アクセスできない可能性があるため

すみません、理解できたと思います...あなたが書いたことを言い換えてください。本当にありがとう!!!

回答:


4

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

準備ができたら、Drupal 8コアには、既存のDrupal 7および6サイトをDrupal 8に直接更新する移行モジュールも含まれています。移行はDrupal 8.0.0では「実験的」とマークされていますが、今後のリリースで完全にサポートされる予定です。 https://www.drupal.org/news/drupal-8.0.0-released

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

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

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


Drupal 8で書き直したサイトを手動で構築し始めました... D7で使用したモジュールの多くがコアに入ったのは確かに良いことです。Drupal 9に移行する当面は、移行テクノロジーがより部分的な状態になり、異なるコンテキストで実行され、ノードのページ上のデータとメタデータ、ノードのリダイレクト、ファイル、ビュー、パネル、それに対するすべては可能な限り独自のものです...プロセスを異なるステージに分割する(いつでも可能な各ステージから開始できる場合)は、私が望んでいることです...

申し訳ありませんが、以下の回答を投稿しました。最も可能性の高いことについて具体的な詳細を記載しています。もちろん、賞金はあなたと共にあります。

2

あなたのエラーメッセージがで行に含まれる文字列と完全に一致するhttp://cgit.drupalcode.org/migrate_upgrade/tree/src/MigrationCreationTrait.php#n40モジュール(「アップグレードのDrupal」のコードの中に/:HTTPSを/www.drupal.org/project/migrate_upgrade)。

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

多分これはまた役立つ:

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

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

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

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

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

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


質問で述べたように、その膨大なPHPコードの何が問題なのかを理解するためのPHPの知識がありません...質問を編集して、この「例外がスローされている」とは何か、簡単に説明してください。それを処理するための段階的な方法?できるだけ単純にしてください。私はPHPを試して始めたばかりです。

@benosこれは単に、非常に些細なことが、移行設定で誤って構成されていることを意味します。タイプミス、間違ったパスワード、間違ったURL。そんな感じ。
leymannx 2016年

@benos、ここで$ e-> getException()をcgit.drupalcode.org/migrate_upgrade/tree/src/…出力すると、PDOエラーが表示されます。
benjy 2016年

@leymannxローカルに2つのDBを作成した場合(D7に1つ、D8に1つ)、D7の1つだけが完全に同じ詳細を持つ必要があります。アップグレードしたいオンラインサイトです。

@leymannx私はすべてを再現しました。ローカルD7データは、オンラインD7サイトでもまったく同じです。サイトのフォルダーは同じです。DB名とユーザー名は同じで、パスワードは同じです。プレフィックスも追加しましたが、すべてが適切に表示されているようですが、同じエラーが発生します。

0

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

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

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

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


0

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

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

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

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

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

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

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

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


0

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

よろしく、カルロスアレマン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.