web-dev-qa-db-fra.com

Quelles tables doivent être vidées lors de l'effacement manuel du cache stocké dans la base de données?

Avant D8 pour vider le cache manuellement, on pouvait tronquer toutes les tables commençant par cache_.

Dans Drupal 8, il y a encore des tables commençant par cache_, mais il y a aussi une table cachetags.

Le conseil du D8 est-il encore de tronquer cache_* si vous devez vider le cache manuellement? Est-il sûr/obligatoire/recommandé de tronquer la table cachetags avec la cache_* les tables?

Je suis conscient qu'il peut y avoir des modules contrib qui font les choses différemment, je suis surtout intéressé par ce que fait le noyau et ce qui est considéré comme "meilleure pratique" pour Drupal 8 en général.

13
Clive

Dans drupal 8 si vous recherchez les tables sûres qui doivent être effacées manuellement, effacez les tables commençant par cache_ et tronquez également la table cachetags.

Si vous utilisez drush, utilisez cette commande pour vider le cache-

drush cache-rebuild

6
Rahul Mishra

Selon cet articlecachetags sont définis lorsque les objets de cache sont stockés, il devrait donc être sûr de tronquer ce tableau également. Les cachetags identifient les objets du cache et vous pouvez obtenir tous les objets associés en même temps.

3
Paul Bönisch

C'est très pratique. Remplacez dbname au besoin:

DB_NAME="dbname"

mysql -uroot -proot --execute="SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '${DB_NAME}' AND TABLE_NAME LIKE '%cache%'" | sed 1d | mysql -uroot -proot ${DB_NAME};
0
André

Vous pouvez le faire pour un one-liner:

drush sqlq "TRUNCATE cache_default;TRUNCATE cache_bootstrap;TRUNCATE cache_container;TRUNCATE cache_discovery;TRUNCATE cache_data;" -l <uri> --no-interaction

Ajoutez autant de préfixes cache_ que vous le souhaitez.

0
Dan