質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

2回答

6822閲覧

rails postgresのエラーでPG::UndefinedTable: ERROR: relation "sessions"does not existで困っている。

lulu

総合スコア39

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/07/19 04:15

編集2022/01/12 10:55

rails歴半年のものです。
ある日、masterをpullしたら、localhost:3000に以下のエラーが出るようになりました。
同僚のmacでは動いており、私のmacだけ動きません。私のpostgresに問題があるようです。
postgresは10.4です。

postgresは10.4を使っており、extencionとしてpostgisを使っています。
何か心当たりなどありますでしょうか?
rails db:migrate/rails db:drop/ postgresの再インストールは試しました。
助けてください

Processing by StaticPagesController#home as HTML Rendering 500 with exception: PG::UndefinedTable: ERROR: relation "sessions"does not exist LINE 8: WHERE a.attrelid = '"sessions"'::regclass ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod, c.collname, col_description(a.attrelid, a.attnum) AS comment FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum= d.adnum LEFT JOIN pg_type t ON a.atttypid = t.oid LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation WHERE a.attrelid = '"sessions"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum Completed 500 Internal Server Error in 7ms (ActiveRecord: 1.2ms)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/07/19 04:20

プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
sazi

2018/07/19 04:30

動いている同僚のPCとの差異(OSとかpostgresとかのバージョンなど)を質問に追記して下さい。
lulu

2018/07/19 06:42

同僚はmacです。postgresは10.4で同僚も同じです。
m.ts10806

2018/07/19 06:43

質問は編集できるので指摘や追記依頼には適宜対応していただけると助かります。
sazi

2018/07/19 06:44

発行されるSQLも同じならエラーにならないはずなので、ソースに差があるんじゃないですか。
lulu

2018/07/19 06:51

ソースには全く差がないのですが、postgresのユーザーなど、postgresの中身が違います。
guest

回答2

0

以下がエラーとなっているSQLですね。

SQL

1SELECT a.attname, format_type(a.atttypid, a.atttypmod), 2 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod, 3 c.collname, col_description(a.attrelid, a.attnum) AS comment 4FROM pg_attribute a 5 LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum= d.adnum 6 LEFT JOIN pg_type t ON a.atttypid = t.oid 7 LEFT JOIN pg_collation c ON a.attcollation=c.oid AND a.attcollation <> t.typcollation 8WHERE a.attrelid = '"sessions"'::regclass 9 AND a.attnum > 0 AND NOT a.attisdropped 10ORDER BY a.attnum

上記の

SQL

1WHERE a.attrelid = '"sessions"'::regclass

部分でエラーになっています。
sessionsというテーブルが無いってエラーです。
postgresでは"で括ると、それはテーブル名や項目名を意味します。
値が条件なら

SQL

1WHERE a.attrelid = 'sessions'::regclass

じゃないでしょうか。

投稿2018/07/19 04:42

編集2018/07/19 04:44
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lulu

2018/07/19 06:23

丁寧な回答ありがとうございます。 Rails側では具体的にどうしたら良いでしょうか?
sazi

2018/07/19 06:42

sessionsという値を設定している箇所で、"で括られたものを設定しているんじゃないでしょうか。
lulu

2018/07/19 06:49

deviseの問題かなと思うのですが、railsのどの場所が悪いのかがわからないです。 例えばdeviceならどこのファイルをいじるなどわからないでしょうか。 かなり困っています。お願いいたします。
sazi

2018/07/19 07:05

"sessions"でgrepするなどすれば見つかりませんか?
lulu

2018/07/19 07:13 編集

すみません。基礎的なことがわからなくて、vscodeで検索してもコードには特にsessionsを"で定義している箇所はないのですが、 何らかのコマンドとgrepを組み合わせると、不具合の箇所がわかるのでしょうか?
sazi

2018/07/19 09:32

ソースも同じなら、動作している環境のDBのバックアップを取ってリストアすれば同じになりそうですが。 どこに原因があるかの特定は正直分かりません。
guest

0

Google検索トップです。
調べましたか?

投稿2018/07/19 04:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lulu

2018/07/19 06:50 編集

あああ、ありがとうございます。 でもこの方法だとうまくいきません。 SETは成功するのですが、 SHOW search_pathを行うと、SETする前の値が帰ってきます。
lulu

2018/07/20 02:27

sessionsが存在しないと出るのですが、posticoでpostgresのテーブル一覧を見てもsessionが存在していません。なので、上記の方法だとうまくいかないことに気がつきました。
退会済みユーザー

退会済みユーザー

2018/07/20 02:47

sessionテーブルが存在しないのに上記ではsessionテーブルを要求しているためエラーを発しているように見えます。下のsaziさんの回答が的を射ているように思えるのですが...。
退会済みユーザー

退会済みユーザー

2018/07/20 02:49

StaticPagesControllerの記述に間違いはないですか? (そこに原因があるかはわからないですが...)
退会済みユーザー

退会済みユーザー

2018/07/20 02:55

どのページにアクセスしてどの処理の段階でエラーが起きているのか調べれば原因も見えてくると思います。 その辺の詳しい状況がわからないのでこれ以上アドバイスのしようがないです。 byebugなどで大まかな場所だけでも調べてみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問