「One of DBD」Vol.4 SQLのエラー解消方法

「One of DBD」の第四走者を務めるのは、日野 真央(ひの まお)さんです。

 

f:id:data-h-products:20201215114946p:plain

 

自己紹介

  • データビジネスデザイン事業本部 データアナリストの日野真央です。

  • ビッグデータを用いたCRMの運用やデータ分析を業務としています。

  • 在宅勤務が長くなり、家に引きこもることが多くなったので最近は意識的に散歩に出るようにしています。

  • f:id:data-h-products:20201215104212j:plain
  • 8時頃散歩に出たらカモも朝ご飯を食べていました。

    業務でSQLを書くことが多いので、今回はエラーが返ってきた時の自分なりの対処法を書こうと思います。

 

SQL対処法の三か条

  • 1.小分けにしてエラー原因を調べる

  • f:id:data-h-products:20201215105435j:plain
  • 簡単なSQL文であればすぐに見つかることが多いのですが、With句などを使って長いものを書いた場合は、エラー原因を調べるだけで一苦労です。

    さらに処理がどこまで問題ないかは教えてくれず、1行だけ「この辺りが間違っている」という大まかなエラー文が返ってくるので、「なにが違うのか」を探すところから始めなければならなりません。

    まずはエラー分で指示された箇所を中心にして、発生しがちなエラー原因を調べます。

    • スペルが違う
    • 指定したテーブル
    • カラムが違う
    • 文法が違う
    • データ型が違う(文字型と数値型を比較してしまう など)
    • ()が正しく閉じられていない
    • 同じカラム名がある複数テーブルをjoinした時、どちらのテーブルのカラムか指定していない

    それでもエラーが解消しない場合は、エラー個所として表示された行周辺のSQLを順に実行します。

    処理結果を確認してエラーを起こしている個所を明らかにします。

    順番に実行するSQLの例 FROM(Join) → WHERE → GROUP BY → SELECT

  • 2.エラーコードの調べ方

  • エラー文やエラーコードの意味が分からなかった時は、「エラー文 言語名(PostgreSQL)」で検索すると、詳しいエラーの内容や、過去に同じエラーで苦労した先人の知恵が検索結果として出てきます。

    エラーが起こった原因をまとめている方、どうやってそのエラーを解消したか公開している方、そういった先人の知恵を拝借して解決します。 エラーの他、「こんなことできる文書きたいな」といったときにもネットのお世話になっています。

  • 3.無理せず休憩やコミュニケーションを

  • f:id:data-h-products:20201215105435j:plain
  • 自分でSQL文を確認しても、検索してもどうにもならない時は

    休憩する

    ずっと同じSQLを見ていると、普段気付けるエラーの原因も見落とす状態に陥りがちになります。
    疲れているならなおさらです。 そんな時は10分でも休憩するとすんなり解決に至る場合があります。

    同じチームの人に見てもらう/聞いてみる

    自分以外の誰かに見てもらうと先入観なく確認ができるので、どうしても分からない時は人に頼ります。
    休憩と同じく、すんなり解決する場合がありますし、もしその人が過去に同じエラーで詰まったことがあれば、ノウハウを直接聞くことができます。 エラーが発生している部分を共有しているうちに思考が整理されて、原因に気付ける場合もあります。

 

以上がSQLでエラー文が出たときの私の対処法でした。
ありがとうございました。