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.