Обновления базы данных после получения обновлений кода для модулей


Я обновил несколько модулей в своей локальной среде разработки, а затем внес изменения в код с помощью git.

На моем тестовом сайте я вытащил код и запустил drush updb, но он показывает, что ничего не нужно обновлять и что обновленные мной модули теперь актуальны. В прошлом, каждый раз, когда я выполнял обновления, я исходил из предположения, что в нем есть компонент обновления базы данных, и всякий раз, когда я запускал drush updb, он принимал код, который был просто реализовано с помощью git и запустите обновление. Не уверен, почему на этот раз все по-другому, может кто-нибудь объяснить? Я пропустил команду? Если обновления базы данных не требуются, я могу продолжать, зная, что обновления действительно завершены?

Если обновления базы данных не требуются для всех обновлений модулей, может ли кто-нибудь привести пример того, когда обновления касаются и не касаются базы данных?

Редактировать: Примером одного из таких обновлений был токен полей адресов или модуль статических карт Google.

 2
Author: Christia, 2018-01-27

1 answers

Что заставляет вас думать, что для любого из обновленных модулей часть фактических обновлений включала некоторое обновление базы данных, которое необходимо выполнить? Другими словами: существует (множество) случаев, когда при обновлении какого-либо модуля нет связанных обновлений базы данных, которые включены в такое обновление модуля.

Из "Написание файлов .install (Drupal 7.x)", в разделе "Обновления модуля с помощью hook_update_N":

Обновление вашего модуля, например обновление вашей схемы, может быть сделано с помощью функций hook_update_N. Страница API для этого находится по адресу: функция hook_update_N.

Предположим, вы добавили новый столбец под названием "newcol" в mytable1. Во-первых, обязательно обновите структуру схемы в mymodule_schema(), чтобы вновь созданные таблицы получали новый столбец. Затем добавьте функцию обновления в mymodule.install...

Взгляните на эту часть файла .install об обновлении базы данных для модуля Правил, которая выглядит следующим образом итак:

/**
 * Creates a flag that enables a permission for using components.
 */
function rules_update_7209() {
  // Create a access exposed flag column.
  db_add_field('rules_config', 'access_exposed', array(
    'type' => 'int',
    'not null' => TRUE,
    'default' => 0,
    'size' => 'tiny',
    'description' => 'Whether to use a permission to control access for using components.',
  ));
}

PS: Справедливо сказать, что обновления базы данных не требуются, если в схему не внесены изменения.

 2
Author: Pierre.Vriens, 2018-01-27 09:11:39