すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for MySQL インスタンスの使用時に "1055 (42000): SELECT list is not in GROUP BY clause and contains nonaggregated column" というエラーメッセージが表示される場合の対処方法

最終更新日:Nov 10, 2025

問題の説明

ApsaraDB RDS for MySQL インスタンスで SQL 文を実行すると、次のエラーメッセージが表示されます。

1055(42000): SELECT list is not in GROUP BY clause and contains nonaggregated column

原因と解決策

このエラーは、sql_mode パラメーターが変更されたために発生します。

原因 1: ユーザーが sql_mode パラメーターを変更し、GROUP BY 構文が無効になる

  • 原因: ユーザーが sql_mode パラメーターの値に ONLY_FULL_GROUP_BY を追加したため。その結果、GROUP BY 句の構文が標準に準拠しなくなります。

  • 解決策: ApsaraDB RDS コンソール にログインし、リージョンを選択して、RDS インスタンスの ID をクリックします。[パラメーター] ページで、sql_mode パラメーターの値から ONLY_FULL_GROUP_BY を削除して、GROUP BY 句の厳密なチェックを無視します。詳細については、「インスタンスパラメーターの変更」をご参照ください。

原因 2: ビジネス側のドライバーが sql_mode パラメーターを変更し、GROUP BY 句でエラーが発生する

  • 原因: ビジネス側のドライバーが sql_mode パラメーターの値を変更したため。たとえば、ビジネス側の ADO.NET ドライバーが sql_mode パラメーターの値を変更すると、GROUP BY 句でエラーが発生します。

    issue

    自動インクリメント列の値を INSERT 文で返す必要がある場合、ドライバーは INSERT 文が実行される前に現在のセッションの sql_mode パラメーターの値を自動的に変更しますが、INSERT 文の実行後に sql_mode パラメーターを元の値に戻しません。現在のセッションが引き続き使用されている場合、GROUP BY 句を含む SELECT 文を実行するとエラーが発生します。

  • 解決策: ADO.NET ドライバーを使用している場合は、INSERT 文を実行した後、クエリを実行する前に、sql_mode パラメーターを元の値に戻す文をビジネスコードに追加します。

    SET session sql_mode = default;