web-dev-qa-db-ja.com

孤立したwp_postmetaレコードを削除しても安全ですか?

私はワードプレスサイトのショッピングカートとしてウーコマースを使用しています。製品と製品バリエーションは、それぞれwp_postsテーブルにレコードとして格納されます。これらのバリエーションにはそれぞれ約があります。 wp_postmetaに15から20個の関連レコード(SKUや価格など、その製品に関するさまざまな詳細を格納するため)。

私が発見したのは、多くのバリエーション(この場合は600以上)には関連する親商品がないということです。まあ、彼らはそうですが、その親製品はもはや存在しません。 wp_postsからこれらの孤立したバリエーションを削除するために、以下を見つけました:

DELETE o FROM `wp_posts` o
LEFT OUTER JOIN `wp_posts` r
ON o.post_parent = r.ID
WHERE r.id IS null AND o.post_type = 'product_variation'

私はこれがその目的のためにうまくいくと思います。しかし、それでもwp_postmetaテーブルに多くのレコードが残っています。

私の質問は、post_idがwp_postsの既存のレコードに対応しないレコードをwp_postmetaから削除することができるかどうかです。つまり、自分でできることはわかっていますが、これらの孤立したレコードをwp_postmetaから削除することには潜在的な落とし穴があります。つまり、メタ情報が存在しない製品バリエーションに対応している場合です。安全に削除できますか?

2
logicbird

これを行う別の方法(より良くはありませんが、従うのは簡単です)は、次のようになります。

DELETE * FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts)

明らかに接頭辞を 'wp_'からあなたの設定が使っているものすべてに変更する

1