Estou trabalhando em um módulo e alterei alguns tipos de campos no esquema. Eu não fiz um backup antes de testá-lo e baguncei o banco de dados (é apenas um site de desenvolvimento). De qualquer forma, reinstalei tudo e a versão do esquema está definida como a atualização mais alta. No entanto, eu realmente preciso executar a atualização; uma Vista que eu não instalaria se tivesse o esquema atualizado no código do módulo, então achei que seria uma boa maneira de testar essa atualização.
Como redefinir a versão do esquema do meu módulo para uma versão específica? No Drupal 7, eu teria feito isso:
drush sqlq "UPDATE system SET schema_version=8102 WHERE name='flllpdf' AND type='module'"
O Drupal 8 agora usa o
keyvalue
serviço para armazenar informações sobre a versão do esquema. Essa é a mesma API que a própria API de estado usa.As informações de valor são serializadas quando armazenadas no banco de dados, portanto, o uso de uma consulta SQL direta é subótimo. Em vez disso, use
drush php-eval
(ou um script que inicialize o Drupal, se você não tiver o Drush) para executar o seguinte:Altere
fillpdf
e8102
para o nome do módulo e a versão do esquema desejada, respectivamente.A forma Drush deste comando é:
drush ev "\Drupal::keyValue('system.schema')->set('fillpdf', (int) 8102)";
fonte
Para SET e GET atualizações do módulo via código (sem Drush). Abaixo está o código
fonte
Também pode ir atualizá-lo diretamente no banco de dados. Se você estiver usando algo como o Sequel Pro (mac) ou qualquer outra ferramenta de interface do usuário do banco de dados, o windows / linux tem muito fácil. Indiscutivelmente, não é a melhor idéia e não seria aconselhável fazer isso em um banco de dados no nível de produção, mas ele fará o trabalho!
Tabela = valor_chave
coleção =
nome do system.schema = fillpdf (your_module)
value = atualização para i: 8102;
fonte