Golang GORM AutoMigrate postgresql エラーの修正方法
新しい pg ドライバのリリースに伴い、AutoMigrate がエラーを発生しています...
新しいGoプロジェクトでGORMを使用し始めたところ、以下のエラーが発生しました:
pq: got 2 parameters but the statement requires 1
これは完全に予想外でしたが、解決方法は単純でした。GORMのPostgreSQLドライバーをバージョンダウンする必要があります。
私は最近のプロジェクトで recent project から
gorm.io/driver/postgres v1.5.11
を
gorm.io/driver/postgres v1.4.0
にバージョンダウンする必要がありました。
いくつかのグーグル検索の結果、2024年2月の情報が見つかりました:
gorm@1.25.7 は postgres@1.5.6 ドライバーと互換性がない。 #167
また、Redditからも以下の情報がありました:
私はアップデートをリリースする前に、常にMySQL、Redis、MongoDBをしっかりテストしています。
PostgreSQLに関しては、いつも通りのマイグレーションテストだけを行いましたが、再実行テストはしていませんでした。
驚いたことに、最後に正常に動作したPostgreSQLドライバのバージョンは
gorm.io/driver/postgres v1.4.0 です!
また、別の問題もありますが、これは一意のバグではなく、以下に記載されています: https://github.com/go-gorm/gorm/issues/5409
v1.23.4 から v1.23.5 へのアップグレード後 #5409
pq: got 1 parameters but the statement requires 0
このGORMとPostgreSQLドライバーのバージョンダウンの解決策は、2025年5月現在では効果的です。