sql >> データベース >  >> RDS >> Mysql

MySQL –エラーの修正–WordPressデータベースエラークエリのキーPRIMARYの重複エントリINSERTINTO wp_options

    多くの人が知っているように、このブログはWordPressで実行され、WordPressの内部にはMySQLデータベースがあります。 MySQLデータベースは非常に優れており、このブログが毎日受信する大量のトラフィックを保持できます。ただし、他のデータベースと同様に、MySQLにはチューニングと適切な管理が必要です。このブログ投稿では、WordPressデータベースエラーという非常に奇妙なエラーをどのように受け取ったか、そしてどのように解決したかについて説明します。

    先週、突然、ブログの読み込みが非常に遅いという友人からの電話がありました。さて、新しいブログ投稿が公開されたり、ニュースレターが送信されたりすると、トラフィックが急増し、Webサイトのパフォーマンスが一時的に遅くなることがよくあります。ただし、この場合、ウェブサイトの実行速度は常に遅くなりました。しばらくすると、サイトでいくつかの新しい問題が見つかりました。パフォーマンスが遅いため、WordPressスケジューラーが新しいブログ投稿を公開しておらず、システムの定期的なバックアップも取っていないこともわかりました。

    注意深い診断の結果、問題はMySQLデータベースにあることがわかりました。エラーログを確認したところ、ログに次のエラーが見つかりました。

    [Fri Sep 09 04:58:03 2016] [error][client]WordPressデータベースエラークエリのキー「PRIMARY」のエントリ「3354142」が重複していますINSERTINTOwp_options(option_name 、option_value、autoload)VALUES(…)

    オプションテーブルに主キー違反があったことは非常に明白でした。ただし、個人的にこのテーブルでトランザクションを実行していなかったか、最近新しい更新やプラグインの変更がなかったため、問題を解決するのは簡単ではありませんでした。私の最初の試みは、この特定のテーブルを古いデータベースのバックアップから復元することでした(サイトとそのデータベースを頻繁にバックアップします)。この特定の問題でさえ失敗し、私はエラーを取り除くことができませんでした。

    最後に、私はインターネットを検索しましたが、残念ながら、本当の助けはありませんでした。その時、いろいろ試行錯誤することにしました。私を信じてください。私はこのエラーを取り除くために4時間以上とさまざまなトリックを費やしています。データベースの論理的整合性エラーであることが非常に明白でした。多くのテーブルとロジックに時間を費やす必要がありました。ええと、4時間後、私はついに解決策を見つけました。それは非常に単純な解決策でした。これをもっと早く知っていて、さまざまな試行錯誤に4時間以上費やしていなかったらよかったのに。

    解決策/修正:

    問題が解決したコマンドに従って実行しました。

    REPAIR TABLE wp_options

    以上です。完了しました。

    実際には、テーブルが破損しており、同じ理由で、データベーステーブルの重複キーに関連するエラーが発生していました。テーブルの破損を修正すると、すべてが正常に機能しました。私の場合、破損したのはwp_optionsテーブルだったことを思い出してください。テーブル名に置き換える必要があり、スクリプトは正常に機能します。

    さらに、データベース内のすべてのテーブルを修復する場合は、次のスクリプトを実行すると、MySQLデータベース内のすべてのテーブルのスクリプトが生成されます。スクリプトを実行すると、データベースのすべてのテーブルを修復します。

    SELECT CONCAT('repair table ', table_name, ';') 
    FROM information_schema.tables 
    WHERE table_schema='YourDatabaseName';

    このブログ投稿がお役に立てば幸いです。 WordPress MySQLデータベースで問題が発生した場合は、私に連絡してください。同じ問題に関連するエラーの解決を喜んでお手伝いします。


    1. SQLServerデータベーステーブルのエクスポートおよびインポートメソッド

    2. make_date()がPostgreSQLでどのように機能するか

    3. スタンドアロンMySQLサーバー

    4. BOMを使用してUTF-8としてエンコードされたファイルに対してSQLPLUSスクリプトを実行することは可能ですか?