Estoy trabajando en un módulo y cambié un par de tipos de campo en el esquema. No hice una copia de seguridad antes de probarla y estropeé la base de datos (es solo un sitio de desarrollo). De todos modos, reinstalé todo, y la versión del esquema está configurada con la de la actualización más alta. Sin embargo, en realidad necesito ejecutar la actualización; una vista que no instalaría si tuviera el esquema actualizado en el código del módulo, así que pensé que sería una buena forma de probar esa actualización.
¿Cómo restablezco la versión de esquema de mi módulo a una versión en particular? En Drupal 7, hubiera hecho esto:
drush sqlq "UPDATE system SET schema_version=8102 WHERE name='flllpdf' AND type='module'"
Drupal 8 ahora usa el
keyvalue
servicio para almacenar información sobre la versión del esquema. Esta es la misma API que utiliza la API de estado .La información del valor se serializa cuando se almacena en la base de datos, por lo que el uso de una consulta SQL directa es subóptimo. En su lugar, use
drush php-eval
(o un script que inicie Drupal, si no tiene Drush) para ejecutar lo siguiente:Cambie
fillpdf
y8102
a su nombre de módulo y la versión de esquema deseada, respectivamente.La forma Drush de este comando es:
drush ev "\Drupal::keyValue('system.schema')->set('fillpdf', (int) 8102)";
fuente
Para CONFIGURAR y OBTENER actualizaciones del módulo a través del código (sin Drush). Debajo está el código
fuente
También puede ir a actualizarlo directamente en la base de datos. Si está utilizando algo como Sequel Pro (mac) o cualquier herramienta de interfaz de usuario de la base de datos que Windows / Linux tenga, es realmente fácil. Podría decirse que no es la mejor idea, y no recomendaría hacerlo contra una base de datos de nivel de producción, ¡pero hará el trabajo!
Tabla = valor_clave
colección = system.schema
name = fillpdf (your_module)
valor = actualizar a i: 8102;
fuente