Direkt zum Inhalt

hook_update_N() neu einspielen - per drush

veröffentlicht von gngn am Di, 07/07/2015 - 08:26

Da bemühet man sich, immer alle Settings (und erschaffene DB-Tabellen und ...) ordentlich im .install File per hook_update_N() anzulegen... und dann bemerkt man nach dem Einspielen (drush updatedb), dass eine Variable vergessen oder ein Fehler gemacht wurde.

Einen neuen hook_update_N+1() anlegen ist nicht wirklich elegant.

Das Wissen um die richtige Stelle in der Datenbank führt zur geeigneten Methode um die Infos zurückzusetzen:

UPDATE system SET schema_version=N-1 where name = 'MYMODULE';

UPDATE 2016-02-18: Hab gerade gefunden, dass es seit Urzeiten (Drupal 4.7) die API-Funktion drupal_set_installed_schema_version()  gibt.
Damit kann ich die Version z.b. mit drush php-eval zurücksetzen, ohne in den DB-Innereien zu wühlen und unabhängig von der Drupal-Version:

drush php-eval "drupal_set_installed_schema_version('MYMODULE', 8000)"

Die aktuelle Version hole ich mit:

drush php-eval 'print drupal_get_installed_schema_version("MYMODULE") . "\n"'

Quellen:

UPDATE 2016-04-12: Aus mir sich nicht erschliessenden Gründen kommt bei den beiden drush php-eval manchmal

PHP Fatal error: Call to undefined function drupal_get_installed_schema_version()

(ebenso für drupal_set_installed_schema_version).

Abhilfe schafft drush cc all.

Neuen Kommentar schreiben