この記事では、よく見られる MySQL / MariaDB のエラーコードと、その対処方法をまとめています。
サーバーへのフルアクセス権がない場合は、Hosting プロバイダに連絡し、これらの上限を引き上げるか撤廃できるかを確認してください。
Contents
MAX_CONNECTIONS_PER_HOUR
このエラーコードは、1 時間以内に MySQL サーバーに対して確立された最大接続数を指します。この上限を超えると、サーバーは接続リクエストを拒否し始め、「1040 – Too many connections」というコードのエラーメッセージを返します。このエラーは、サーバーに高い負荷がかかっている場合や、同じユーザーから同時に多数の接続試行が行われている場合に発生します。
このエラーを解決するには、1 時間あたりに許可される最大接続数を指定するシステム変数 MAX_CONNECTIONS_PER_HOUR の値を引き上げてみてください。あるいは、アプリケーションを最適化して不要な接続を減らし、アイドル状態の接続が適切に閉じられるようにしましょう。
MAX_USER_CONNECTIONS
このエラーコードは、1 人のユーザーが同時に MySQL サーバーへ確立できる最大接続数を指します。上限を超えると、サーバーは「1226 – User ‘username’ has exceeded the ‘max_user_connections’ resource」というコードのエラーメッセージを返します。このエラーは、あるユーザーのアプリケーションがサーバーに対して多すぎる接続を行ったり、複数のアプリケーションが同じユーザーアカウントを使用したりしたときに発生します。
このエラーを解決するには、ユーザーごとに許可される最大接続数を指定するシステム変数 MAX_USER_CONNECTIONS の値を引き上げてみてください。あるいは、アプリケーションの接続利用状況を見直し、必要な接続数を減らすように最適化してください。
MAX_QUERIES_PER_HOUR
このエラーコードは、1 時間以内に MySQL サーバー上で実行できるデータベースクエリの最大数を指します。上限を超えると、サーバーは「1226 – User ‘username’ has exceeded the ‘max_queries_per_hour’ resource」というコードのエラーメッセージを返します。このエラーは、アプリケーションがサーバーに対して多すぎるクエリを発行したり、複数のアプリケーションが同じユーザーアカウントを使用したりした場合に発生します。
このエラーを解決するには、ユーザーごと・1 時間あたりに許可される最大クエリ数を指定するシステム変数 MAX_QUERIES_PER_HOUR の値を引き上げてみてください。あるいは、アプリケーションを最適化して不要なクエリを減らし、クエリそのものも適切に最適化してください。
MAX_UPDATES_PER_HOUR
このエラーコードは、1 時間以内に MySQL サーバー上で実行できるデータベース更新の最大数を指します。上限を超えると、サーバーは「1226 – User ‘username’ has exceeded the ‘max_updates_per_hour’ resource」というコードのエラーメッセージを返します。このエラーは、アプリケーションがサーバーに対して多すぎる更新を行ったり、複数のアプリケーションが同じユーザーアカウントを使用したりした場合に発生します。
このエラーを解決するには、ユーザーごと・1 時間あたりに許可される最大更新数を指定するシステム変数 MAX_UPDATES_PER_HOUR の値を引き上げてみてください。あるいは、アプリケーションを最適化して不要な更新を減らし、更新処理そのものも適切に最適化してください。
Error 1118 – Row size too large
この問題は、InnoDB が行サイズの上限に達し、それ以上データを格納できなくなったことが原因で発生します。このエラーにはいくつかの解決方法があります。こちらの記事で、すべての手順を詳しく解説していますのでお読みください。