は、電子メールがチェックアウト時に直接送信されていないが、代わりにキューに登録されている1.9.1。キューはMagento cronジョブで処理されています。
Magento cronjobsに問題はありません。コマンドは正しいです。電子メールを正常に送信。たとえメールの受信者が正しくないとしても。
Magentoはどのようにメールの受信者を決定しますか?テーブルcore_email_queue_recipients
からはテーブルcore_email_queue
との関係があります。
MySQLは外部キーをサポートしているため、関連するデータをテーブル間で相互参照させることができ、外部キーの制約により、この分散データの一貫性を維持できます。
MagentoにCONSTRAINTとFOREIGN KEYを追加するmessage_id
をテーブルcore_email_queue_recipients
に追加します。
ALTER TABLE core_email_queue_recipients
のADD CONSTRAINT FK_6F4948F3ABF97DE12127EF14B140802A
FOREIGN KEY(message_id
)UPDATE CASCADE ON DELETE CASCADE ON core_email_queue
(message_id
)を参照。
外国キーmessage_id
はのテーブルcore_email_queue
を参照します。どちらの表も互いに拘束されています。テーブルcore_email_queue
は親になり、子としてはcore_email_queue_recipients
となります。 message_id
= 1の行をcore_email_queue
から削除した場合。 message_id
= 1のすべての行は、core_email_queue_recipients
から自動的にMySQLによって削除されます。
実際の問題は何ですか?私はMySQLデータベースサーバーにログインします。テーブルcore_email_queue_recipients
には外部キー制約がありません。何故かはわからない。多分、彼または彼の開発者はテーブルを削除するでしょう。だから、毎回cronjobs電子メールキューをクリーンアップします。 MySQLサーバーは電子メールキューのみを削除します。削除されたキューの電子メール受信者は無視されます。テーブルcore_email_queue_recipients
のデータの完全性が破損しました。