DjangoのPostgresSQL環境で「psycopg2.errors.DatatypeMismatch」

今回はDjangoのPostgresSQL環境で「psycopg2.errors.DatatypeMismatch: EXCEPT types 〇〇 and ×× varying cannot be matched」というエラーが起きたときの対処法についてご紹介いたします。



DjangoのPostgresSQL環境で「psycopg2.errors.DatatypeMismatch」

私はDjango(Python)でPostgresSQL環境を使用しているときに「psycopg2.errors.DatatypeMismatch: EXCEPT types numeric and character varying cannot be matched」というエラーが出てしまいました。

結論から言うと、クエリセットの差を比較するDjangoのdifference関数(SQLではEXCEPTが発行される)を使用した際に、比較する対象の型が間違っていることが原因でした。

クエリセットAではChar型のtestという変数を使用しているのに対し、クエリセットBではInteger型のtestという変数を使用しているとします。
このときクエリセットAとクエリセットBでdifference関数を使って比較してしまうと、表題に書いた「psycopg2.errors.DatatypeMismatch: EXCEPT types 〇〇 and ×× varying cannot be matched」というエラーが出てしまうのです。

Djangoのdifference関数を使っていて表題に書いたようなエラーが出た場合は、比較する対象のクエリセット同士の型が合っているかどうか確認してみてください。

終わりに

今回はDjangoのPostgresSQL環境で「psycopg2.errors.DatatypeMismatch: EXCEPT types 〇〇 and ×× varying cannot be matched」というエラーが起きたときの対処法についてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Django

Posted by ちこ