Drupal 8 마이그레이션 모듈에서 새 마이그레이션을 새로 고치는 방법은 무엇입니까?


10

Drupal 8 마이그레이션 프로세스를 작성할 때 사용자 정의 마이그레이션 모듈을 다시 설치하면 새 마이그레이션 프로세스 만 새로 고칠 수 있습니다. drush cr이 작동하지 않습니다.

설명:

하나의 모듈이 있습니다. 즉 cm_migrations, 2 개의 마이그레이션이 있습니다.

  • cm_users
  • cm_tags

로 drush msI 참조 :

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                                

새로운 마이그레이션 프로세스를 작성합니다.

  • cm_beers

실행 drush cr; drush ms하고 이전과 동일한 테이블을 봅니다.

제거하고 설치할 때만 cm_migrations세 가지 마이그레이션 프로세스를 볼 수 있습니다.

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                          
 cm_beers        Idle    4      0         4              

모듈을 다시 설치하지 않고 마이그레이션 프로세스를 새로 고치는 방법에 대한 단서가 있습니까?

감사


또한 마이그레이션 프로세스를 실행하고 컨텐츠를 삭제 migrate.migration.cm_beers.yml하고 프로세스를 다시 실행해도 마이그레이션이 실패하지 않는다고 말할 수 있습니다 . yaml 파일의 내용이 어딘가에 캐시되어있는 것 같습니다.
— Ignacio Sánchez

답변:


19

나는 이것이 나를 위해 일한 것을 발견했다.

drush config-import --partial --source = modules / custom / migrate_module / config / install /


안녕, 위의 오류가 발생합니다 : 소스 디렉토리가 존재하지 않습니다. 소스가 디렉토리가 아닙니다.
— harshal

5

이를위한 모듈이 있습니다. 일반적으로 yml 파일은 설치시에만로드됩니다.

이 모듈을 사용하면 자동으로 가져올 모듈 구성 파일을 정의 할 수 있습니다.

https://www.drupal.org/project/config_devel

이 블로그 게시물도 참조하십시오 : https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

자신 만의 Drupal 8 마이그레이션 모듈 개발 및 캐싱 문제 해결

전체 마이그레이션 맵핑이 이제 yaml 파일에서 수행된다는 것을 알게되었습니다. 그러나 자신 만의 마이그레이션 yaml 파일을 작성하는 것은 어떻습니까?

불행히도 새로운 Drupal 8 개발자에게는 몇 가지 함정이 있습니다. Drupal 8 의 구성 관리 인터페이스 ( https://www.drupal.org/documentation/administer/config ) 때문에“config / install”디렉토리의 모든 yml 파일은 모듈을 설치할 때만 가져옵니다.

새 구성 파일을 개발하려는 경우 매우 실용적이지 않습니다. 이를 해결하기 위해 캐싱 문제를 해결하는 “구성 개발”모듈 ( https://www.drupal.org/project/config_devel )을 설치할 수 있습니다. 모든 요청에서 특정 yml 파일을 가져올 수 있습니다. 그러나 불행히도 drush 명령은 아직 지원되지 않습니다. 따라서 module.info.yml의 새 섹션으로 가져 오려는 모든 yaml 파일을 추가해야합니다.

config_devel:
 install:
   - migrate_plus.migration.page_node
   - migrate_plus.migration.menu_item
   - migrate_plus.migration_group.liip

그런 다음 yml 파일을 업데이트 한 후 다음 명령을 실행할 수 있습니다. 새 구성 파일을 구성 관리 인터페이스로 가져옵니다.

drush cdi <module_name>
drush cr

이 기능을 사용할 수 없으며 설명서가 부족합니다. 좀 더 정보를 줄 수 있습니까? drupal.org/node/2845304
— Michael Mallett

5

마이그레이션은 MODULENAME/migrations하위 디렉토리에 있어야합니다 . 마이그레이션 구성을 수정 한 후 간단한 drush cr변경 사항을 적용하면됩니다.

구성 디 리버는 마이그레이션 구성을 다시 마이그레이션 플러그인으로 바꿉니다.

이 변경 레코드를 참조하십시오. 마이그레이션은 구성 엔티티 대신 플러그인입니다.


2

개발 중에 마이그레이션 구성을 업데이트하는 방법과 같은 문제로 고심하고있었습니다. 내가 끝내는 것은 다음과 같습니다.

drush cdi1 path-to-config-dir-form-site-root/your-config.yml

config-devel-import-one, 명령 ( cdi1줄여서)은 단일 구성을 활성 구성으로 가져 오기위한 것입니다. 위에서 언급 한 config_devel 모듈의 일부입니다.


1

FLY의 솔루션으로는 성공하지 못했습니다. yaml을 새로 고치려면 migrate_tools도 제거해야했습니다. 그리고 운이 없습니다 devel_config.

이 새로 고친 구성을 찾았습니다.

$ drush @site_alias pmu mymodule, migrate_tools, migrate_plus -y
$ drush @site_alias en mymodule, migrate_tools, migrate_plus -y

0

Peter J Lord의 해결책에 따라, 설정 디렉토리 (새롭거나 업데이트 된 yml 용)를 settings.php 파일에 추가 할 수도 있습니다. 예 :

$config_directories['fresh'] = 'sites/default/fresh';

해당 디렉토리에 새 yml 파일을 배치 한 다음 drush의 config-import 명령을 사용하여 새로운 구성 설정을 가져옵니다.

drush cim fresh --partial 

-1

나는 때때로 위의 작업 중 어느 것도 발견하지 못했습니다. 그것들을 모두 결합하기까지. 그러나 migrate_tools를 속여서 통찰력을 얻을 수 있습니다.

yml 파일이 나열되기 전에 유효한지 확인합니다. 임포터를 실행 해보십시오 (예 :로 표시되지 않더라도 $ drush ms)

마이그레이션을 제품이라고했기 때문에 다음과 같이했습니다. $ drush mim products

Migration failed with source plugin exception: The &quot;int&quot; plugin does not exist.

이 결함을 수정하고 (필자의 경우 정수로 정수 변경) 위의 @FLY 대답에 따라 마이그레이션이 표시되었습니다. 부끄러운 오류는 나타나지 않았으며 조용히 실패했지만 다른 주제입니다. ;-)

추신 : 나는 이것을 의견으로 게시했을 것이지만, 아직 충분한 포인트가 없습니다.


-2

에 의한 대답에서 FLY 위, drush cdi <module_name>지금해야한다 drush cde <module_name>.


2
drush cde는 구성을 내보내고 가지고있는 것을 덮어 씁니다. 그것은 우리가 원하는 것이 아닙니다. 이것이 어떻게 받아 들여 집니까?
— Michael Mallett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.