モジュールの更新後、サイトが使用できなくなり、phpエラーメッセージのみが表示されます。私はdrush cc
で問題を回避しようとしましたが、それは役に立ちませんでした。
カスタムphpスクリプトでも試してみましたが、私のDRUPAL_ROOT
を見つけるのに問題があります
Mysqlサーバーで直接Drupal 7からキャッシュテーブルをクリアしたいのですが、そのためにどのテーブルをクリアする必要があるのか、特にクリアしてはいけないのかわかりません。
すべての[SITE-PREFIX_]cache*
テーブルをクリアする必要があるだけですか?
キャッシュを備えた適切に作成されたモジュールは、キャッシュのプレフィックスを付ける必要があります。つまり、質問への答えは「はい」です。
モジュールが別の場所にデータをキャッシュするという奇妙なイベントでは、モジュールの hook_flush_caches の実装をチェックして、それらが何を削除するかを確認できます。
はい、単にすべてのcache*
テーブルを(TRUNCATE
)クリアできます。
これは私にとってうまくいきました:
TRUNCATE TABLE cache;
TRUNCATE TABLE cache_block;
TRUNCATE TABLE cache_bootstrap;
TRUNCATE TABLE cache_field;
TRUNCATE TABLE cache_filter;
TRUNCATE TABLE cache_form;
TRUNCATE TABLE cache_image;
TRUNCATE TABLE cache_menu;
TRUNCATE TABLE cache_page;
TRUNCATE TABLE cache_path;
TRUNCATE TABLE cache_token;
TRUNCATE TABLE cache_update;
Drushを使用する場合は、drush sql-cli
を実行し、上記をそこに貼り付けます。
これらのコマンドは、特定のサイトのすべてのキャッシュテーブルをクリアするわけではありませんが、いくつかのエラーを修正するのに役立ちます。その後、drush cc all
を試して残りをクリアできます。
すべてのキャッシュテーブルをクリアするには、サーバーターミナルでこのコマンドを実行します。
# Truncate cache tables in MySQL regardless of the active cache backend
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "TRUNCATE TABLE %;" | $(drush sql-connect) -v
これにより、すべてのキャッシュテーブルがループされ、1つのコマンドで切り捨てられます。
次のように、cache_
から始まる各テーブルを個別にTRUNCATE/DELETEできます。
DELETE FROM cache;
DELETE FROM cache_block;
など(drush sqlq "SHOW TABLES LIKE 'cache_%'"
で確認)。
または、テーブルのリストを使用してクエリを生成し、drushに渡してそれらを切り捨てます。例:
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
または:
echo "SELECT CONCAT('DELETE FROM ', GROUP_CONCAT(TABLE_NAME SEPARATOR ';DELETE FROM ') , ' cache;' ) AS statement FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'cache_%'" | drush sqlc --extra=--skip-column-names | drush sqlc
Memcachedを使用している場合は、そこでキャッシュをフラッシュする必要もあります。 (Bash構文):
echo flush_all > /dev/tcp/127.0.0.1/11211
または、すでに切り捨てられたcache*
テーブルを含むmysqlダンプをインポートできます。
gunzip -c ~/database.sql.gz | grep -v 'INSERT INTO `cache'| mysql --user=root drupal
この記事のJFRには、他の柔軟なパターンベースのソリューションが生のSQLクエリの形式で提供されていますが、Mohammadのようにうまく機能しませんでした。 https://thebarton.org/clear-drupal-cache -sql-query /
drush cr
および/またはdrush cc all
はすべてのキャッシュをクリアすることになっていますが、実際に一部のキャッシュテーブルはクリアされません。次の(簡略化された)コマンドは、すべてのキャッシュを切り捨てます。
drush sql-query "SHOW TABLES LIKE 'cache%'" | while read table; do drush sql-query "TRUNCATE $table"; done;