3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

postgresql relation does not exist

Posted at

どうもチャンクノです。

今回はpostgresqlのエラーでつまずいたお話です。
各都道府県のデータが入っているデータベースがあるのですがそれを最新のものに更新するという事故ったら死ぬタスクを任されました。
その際ローカルのDBで以下のようなSQLを叩いた時

UPDATE hoges SET hoges.area_name = 'foo', hoges.area_kana = 'bar', hoges.detail_name = NULL, hoges.detail_kana = NULL, hoges.updated_at = NOW() WHERE hoges.code = '^_^' AND hoges.area_name = 'Foo' AND hoges.detail_name IS NULL

こんなエラーが出てしまいました。

Query 1 ERROR: ERROR:  column "hoges" of relation "hoges" does not exist

何これ😇
調べると「DBのスキーマ名とユーザー名が違う」、「テーブル名に大文字を含む時に出る」など出てきましたが、社の先輩に聞いたらシンプルにカラム名の前のテーブル名が不要だったみたいです。
つまり

UPDATE hoges SET area_name = 'foo', area_kana = 'bar', detail_name = NULL, detail_kana = NULL, updated_at = NOW() WHERE code = '^_^' AND area_name = 'Foo' AND detail_name IS NULL

これで良いということですね。
UPDATEの際はテーブル名を指定したらその後はテーブル名の指定が不要みたいです。
今回のタスクで確認の手順とか色々勉強になりました。
いやー、beyond beyond

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?