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:
- http://drupal.stackexchange.com/questions/42204/reseting-the-hook-update-n-status-of-a-module
- http://www.fhhyc.com/how-do-i-re-run-updates-change-module-schema-version/
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 hinzufügen