Я работаю над модулем, и я изменил пару типов полей в схеме. Я не делал резервную копию перед тестированием и испортил БД (это просто сайт разработчика). Во всяком случае, я переустановил все, и версия схемы настроена на самое высокое обновление. Тем не менее, мне действительно нужно запустить обновление; Представление, которое я не установил бы, если бы у меня была обновленная схема в коде модуля, поэтому я решил, что это будет хороший способ проверить это обновление.
Как сбросить версию схемы моего модуля до определенной версии? В Drupal 7 я бы сделал это:
drush sqlq "UPDATE system SET schema_version=8102 WHERE name='flllpdf' AND type='module'"
Drupal 8 теперь использует
keyvalue
сервис для хранения информации о версии схемы. Это тот же API, который использует сам State API .Информация о значениях сериализуется при хранении в базе данных, поэтому использование прямого SQL-запроса является неоптимальным. Вместо этого используйте
drush php-eval
(или скрипт, который загружает Drupal, если у вас нет Drush), чтобы выполнить следующее:Изменение
fillpdf
и8102
к вашему имени модуля и нужная версия схемы, соответственно.Форма Drush этой команды:
drush ev "\Drupal::keyValue('system.schema')->set('fillpdf', (int) 8102)";
источник
Для SET и GET обновления модуля через код (без Drush). Ниже приведен код
источник
Также можно перейти обновить его непосредственно в базе данных. Если вы используете что-то вроде Sequel Pro (mac) или какой-либо другой инструмент интерфейса пользователя базы данных Windows / Linux, это действительно просто. Возможно, это не самая лучшая идея, и я бы не советовал делать это в отношении базы данных производственного уровня, но она справится с работой!
Table = key_value
collection = system.schema
name = fillpdf (your_module)
значение = обновить до i: 8102;
источник