it-swarm-ko.tech

단일 모듈에 대한 drush updatedb

Drush를 통해 단일 모듈의 업데이트 기능을 수행 할 수 있습니까? 모듈 이름을 인수로 사용하지 않고 사용 가능한 모든 업데이트를 실행하는 drush updatedb를 볼 수 있습니다. 그런 다음 drush pm-update도 있으며 새 파일도 검사합니다. documentation 은 말합니다 :

(pm-updatecode + updatedb와 동일)

drush pm-update를 실행하면 사용 가능한 모든 (최신 update_function 이탈) 업데이트가 수행됩니다. 정확히 하나의 모듈 만 (db) 업데이트하는 방법이 있습니까?

28
nonsenz

아냐, 못해.

각 모듈을 자체적으로 업데이트하려면 단일 모듈의 파일 만 업데이트 한 다음 updatedb를 실행하십시오.

10
Berdir

Drush 5.7에서는 drush pm-update --no-core module-name. Drush는 현재 모듈을 자동으로 백업하고 새 버전을 다운로드 한 후 데이터베이스를 업데이트하라는 메시지를 표시합니다.

22
ahimsauzi

하나의 업데이트 만 실행하려는 경우 예를 들어 drush eval foo_update_33()을 실행할 수 있습니다. 실제로는 .install 파일을로드해야하지만 그다지 많지는 않지만 약간 복잡합니다.

@macaleaa 솔루션을 시도해 볼 수도 있습니다.

drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'

8
moshe weitzman

drush up someproject 또는 drush upc someprojectsomeproject 모듈 만 업데이트하는 것 같습니다. 원하는 다른 방법은 다음과 같습니다.

drush dl someproject #use --select option to be prompted for a module version
                     #this will overwrite your exising module's files
                     #backup your modules files with --backup, yourself, use a VCS to revert
drush updb           #run available database update scripts

Drupal.org에 대한 비슷한 주제에 대한 토론이 있습니다. 조심하세요!

5
myselfhimself

Drush 5.9를 사용하고 있으며이 명령으로 단일 모듈을 성공적으로 업데이트 할 수 있습니다.

drush dl *project*

예를 들어 'devel'모듈을 업데이트하려면

drush up devel
4
Rod

나는 이것이 up를 사용하여 Drush에서 가능하다고 생각합니다.

drush up module_name
1
zgreen

업데이트 함수 (MYMODULE_update_7101)에 의해 생성 된 테이블이 있었지만 모든 캐시에서 거의 모든 drush 호출의 코드 어딘가에서 해당 테이블에 액세스하고있었습니다 (기본적으로 엔티티 유형의 이름을 가져오고있었습니다) 모든 메뉴와 그 밖의 모든 것). drush updatedb를 (를) 실행하는 것이 첫 번째 대신 MYMODULE_update_7101을 (를) 실행했습니다.

@macaleaa와 @moshe weitzman이 제안한 솔루션을 시도했습니다.

drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'

drush updatedb를 (를) 실행하기 전에 도움이되지 않았습니다. updatedb이 (가) MYMODULE_update_7101()을 (를) 다시 실행하려고 시도하여 오류가 발생하여 테이블이 이미 존재하기 때문에 drush 실행에 실패했습니다. 기본적으로 위 코드는 업데이트를 실행했지만 업데이트가 실행 된 시스템에는 해당 표시를 남기지 않았습니다. 아마도 모듈에 대한 최신 버전 번호를 db 등으로 저장하기 위해 각 업데이트를 실행 한 후에 수행해야 할 다른 것들이 많이 있습니다. update.php.

update.php를 통해 실제로 각 업데이트 기능을 실행하는 방법과 그 이후의 작업을 확인하고 업데이트 기능을 호출하고 다른 모든 작업을 수행하는 호출하는 함수를 찾았습니다. 나는 이것을 얻었습니다.

include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);

내가 실제로 돌진으로 달렸다.

drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'

업데이트를 실행했지만 아무런 문제가 없었지만 updatedb을 (를) 실행할 때 MYMODULE 버전 7101이 여전히 업데이트 목록에 표시되었지만 오류없이 실행되었으며 사이트를 검사 할 때 모든 것이 양호 해 보였습니다.

약간 해키와 6 년 늦었지만 모든 것이 잘 끝나는가?

0
nerdlinger