gorpでSQL書いてレコード取得する時には必ず個別にカラムを指定したほうが良い話

SQLとして何が好ましいかという話はしないし関係ない。

SQL書いてSELECTするような場合、gorp.DbMap.Select とか gorp.DbMap.SelectOneとか。gorp.rawselectってのが呼ばれて、 そこでは、取得したカラムの全てがstructに無い場合エラーを吐くようになってる。

https://github.com/coopernurse/gorp/blob/87135bba705725c26b805636fd548fae440a1c6b/gorp.go#L1495

なので、例えばだけど、

  • dbmap.Select(&User{}, "SELECT * from users")とかってしている
  • User struct にname追加, users tableにname追加するmigration作成
  • migration実行
  • app再起動

とかって場合、app再起動が終わるまでその部分はエラーを吐く。


gorp.DbMap.Getとかはそもそもフィールドを指定しないけど、そういうことは起こらない。