"소스 데이터베이스에는 인식 가능한 Drupal 버전이 없습니다."


9

로컬 Ubuntu 데스크탑 15.10 Apache2 (2.4.12) 환경에 두 개의 Drupal 사이트를 설치했습니다. 하나는 Drupal 8을 새로 설치 한 것이고, 두 번째는 Drupal 7 (주로 코어 모듈)로 구축 된 기존 작업 사이트의 사본입니다. 페이지에 따라 매우 겸손합니다). 두 사이트 모두 어디서나 문제없이 잘 작동합니다.

저의 목표는 무엇보다도 Drupal 7 사이트를 Drupal 8로 업그레이드하는 것입니다. 동일한 언어 구성과 같은 모든 예비 단계를 수행했습니다. 모듈을 사용하여 최소화하십시오 (D7 사이트에서 업그레이드 후 쉽게 가져올 수있는 모든 모듈 제거) ), 같은 모듈이 두 사이트 등에 모두 설치되어 있는지 확인하십시오. 이제 Drupal 7 사이트를 새로운 Drupal 8 사이트로 "초월"하고 싶습니다.

내 목표를 달성하기 위해 Drupal 8 사이트에 Drupal Upgrade 모듈을 설치하고 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

왜 DB를 좋아하지 않습니까? 이 DB가있는 D7 사이트는 문제없이 잘 작동합니다.

1
"구성"에 의한 @Berdir은 D8 사이트의 Drupal Upgrade 모듈의 conf를 의미합니까? ? 난 아무것도 놓친 적이 있다면 내가 작성하십시오 세부 사항은 모든 I 필요, 제가 확인해 보겠습니다 ... 당신은 뭔가 ... 놓친 생각 된 곳

이미 localhost 대신 127.0.0.1을 사용해 보셨습니까? (아마도 현재 업그레이드 구성으로 데이터베이스에 전혀 도달하지 못할 수도 있습니다)
leymannx

죄송합니다. 이해하신 것 같습니다 ... 작성한 내용을 다시 말씀해 주시겠습니까? 많은 감사합니다 !!!

답변:


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 구성 요소, 아키텍처로 변경했습니다 ... 따라서 upgradedrupal 사이트를 괜찮은 버전에서 8.0으로 직접 변경할 수있는 방법이 없습니다 migrate. 여기에 어떻게 migrating프로세스가 보일 것입니다 :

  1. d7 사이트와 동일한 기능을 가진 사이트를 다시 만드십시오.
  2. 테마를 다시 만듭니다 (가단 템플릿 사용).
  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 모듈을 "업그레이드 드루팔"(의 코드 내에서 / : HTTPS /www.drupal.org/project/migrate_upgrade ).

버그가 아니라 "예외 발생"이라는 것을 보여줍니다. 해당 코드의 3 줄을 보면 연결 설정에 문제가 있다고 생각합니다.

어쩌면 이것이 도움이 될 수도 있습니다.

  • 문제 https://www.drupal.org/node/2628440 (의견 번호 3) 의 인용문 :

    소스 데이터베이스가 유효한 Drupal 데이터베이스인지 확인하고 데이터베이스 버전을 확인하기 위해 업그레이드 프로세스는 '시스템'테이블을 봅니다. 해당 테이블이 양식에 지정한 데이터베이스에 있습니까? 해당 데이터베이스에 Drupal 설치가 접두사로되어 있습니까? 그렇다면 양식의 "고급 옵션"섹션에 접두사를 입력하셨습니까? "

  • 같은 문제에서 주석 nr 4가 뒤 따릅니다. "테이블 접두사 제공으로 문제가 해결되었습니다."

물론 benjy 의 의견 (감사합니다!)은 실제 발생하는 오류에 대한 자세한 정보를 얻는 데 도움이됩니다.

여기서 cgit.drupalcode.org/migrate_upgrade/tree/src/… $ e-> getException ()을 인쇄하면 PDO 오류가 표시됩니다

링크를 통해 표시된 코드에서 라인 122와 123 사이에 이러한 인쇄를 (임시) 추가 할 수 있습니다.


질문에서 언급했듯이, 방대한 PHP 코드의 문제점을 이해하기위한 PHP 지식이 없습니다 ... 질문을 편집하고 실제로이 "예외 발생"과 무엇이 무엇인지 간단한 단어로 설명해 주시겠습니까? 그것을 처리하는 단계적인 방법? 가능한 한 간단하게 PHP를 맛보기 시작했습니다.

@benos 단순히 마이그레이션 설정에서 아주 사소한 것이 잘못 구성되었음을 의미합니다. 오타, 잘못된 비밀번호, 잘못된 URL 그런 것.
leymannx

@benos, 당신은 $ 전자> getException () 여기에 인쇄 할 수 cgit.drupalcode.org/migrate_upgrade/tree/src/...을 한 다음은 PDO 오류를 볼 수 있습니다.
benjy

@leymannx 로컬로 2 개의 DB를 생성 한 경우 (D7 용 1 개, D8 용 1 개), D7 중 하나만 업그레이드하려는 온라인 사이트와 정확히 동일한 세부 정보를 가져야합니다.

@leymannx 나는 모든 것을 다시 만들었습니다. 로컬 D7 데이터는 온라인 D7 사이트에서 정확히 동일합니다. 사이트 폴더가 동일합니다. DB 이름과 사용자 이름은 동일하고 암호는 동일합니다. 나는 또한 접두사를 추가했지만 모든 것이 제자리에있는 것처럼 보이지만 여전히 같은 오류가 발생합니다.

0

코드베이스가 {system} 읽기를 건너 뛰는 순간 다음 데이터베이스 테이블 {field_config_instance}를 찾지 못해 죽습니다. 즉, D7 데이터베이스를 읽지 않습니다. 아마도 D8을 읽으려고 시도 할 것입니다. 아마도 완전히 다른 것입니다. 어떻게 알 수 있습니까? 아마도 잘못된 DB 구성을 입력했을 가능성이 큽니다 (예 : 두 사이트는 mysql 서버가 모두 localhost이지만 localhost가 동일한 서버가 아닌 다른 서버에 있습니다). 방금 Migrate Upgrade contrib 모듈과 코어 마이그레이션 모듈 코드를 모두 확인했으며 조각이 아닌 전체 데이터베이스 설정 배열을 처리하므로 접두사와 관련된 버그가 있는지는 매우 놀랍습니다.

이 문제를 해결하는 방법에 대해 인프라에 액세스하지 않으면 말할 수 없습니다. 죄송합니다. 내가 그것을 폐쇄하기 위해 투표를 할 수 있지만 현상금이 있기 때문에 나는 할 수 없습니다. 우리는 당신을 도울 수 없으며이 질문은 다른 사람들을 도울 수 없습니다. 가능한 유일한 도움은 다음과 같습니다. Drupal 7 설정 파일을 읽고 이해 하고 Migrate Upgrade 모듈에 올바른 자격 증명을 제공하십시오 (많은 설명이 이미 진행되고 있음을 보여줍니다).

장기적인 해결책 중 하나는 사람들이 자신의 settings.php를 업로드 할 수있는 contrib 모듈의 기능을 포함 한 다음 사용할 수 있습니다. 이것은 매우 약하지만 내가 생각할만한 가치가 있습니다. 누군가가 그것을 코딩 할 시간이있을 때 ...

사람들이 왜 그렇게 많이 찬성했는지 모르겠습니다. 같은 문제를 가진 다른 사람이 있습니까?


0

이 게시물을 게시 한 후 많은 시간이 지났지 만 이제는 문제가 무엇인지 알고 있습니다.

2-3 개 모듈을 설치 한 상태로 두었다가 "기본"이라고 생각했기 때문에 모든 핵심 모듈과 마찬가지로 마이그레이션 경로가 있다고 확신했습니다.

메타 태그 및 리디렉션 (Dupal 8에서 D7 Globalredirect & Redirect에서 Redirect로 이동)입니다.

나는 이것을 D7 사이트에 두었을뿐만 아니라 D8에도 설치 했으므로 필요에 따라 내 사이트 버전 중 핵심 버전이 없었습니다.

그것은 나의 첫번째 이주 였고 나는 프로젝트에 대한 신입생으로서 그 실수를했다. 나는이 모듈들이 마이그레이션 경로를 가지고 있지 않다는 것을 "믿을 수 없다"고 확신했다. (그리고 생각할 때 실제로 있어야한다) 실제로 나는 보통 핵심 모듈 만 가지고 있다는 것을 발견했다. 그렇지 않으면 사용자 정의 또는 contrib 마이그레이션 경로가 있어야합니다.

이 모듈과 다른 모듈에는이 마이그레이션 경로로 패치하여 사용할 수있는 contrib 마이그레이션 경로가 있습니다 (경로와 함께 모듈에 "주입").

어쨌든, 당시에는 그렇지 않았으며 시스템과 함께 제공 될 것이라고 확신했습니다 ...

나는 고통스럽게 틀렸다. 그리고 이것은 위의 이주가 실패한 유일한 이유이다. 약 2 개월 전에 마지막으로 성공적으로 마이그레이션하기 전에 수행 한 작은 실험으로이 가정을 강화했습니다.


0

오류 메시지가 표시되면 "drupal_"이 설정 한 $ db_prefix로 밝혀졌습니다. 고급 옵션에 넣어야합니다.

감사합니다. Carlos Aleman

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.