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

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

ただいまの
回答率

89.53%

postgreSQLで「リレーションが存在しません」を乗り越える

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 9,973

Maeterlinck

score 7

postgreSQLを学び始めたものです。

ERROR:  relation "item" does not exist

PostgreSQLで上のような表示が出てしまい、リレーションitemが存在しないと認識されている状態です。

他の質問や、他のサイトを参照する限り、テーブル名は小文字にしたほうがいいということですが、もともとテーブル名はitemという小文字です。

また、SET search_path TO スキーマ名;
でスキーマ名をpublic一択にし、
SHOW schema_path;で現在のスキーマがpublic のみになっていることも確認しました。

にも関わらず、sample=# select * from public.item;
とスキーマ修飾子付きで入力しても、
ERROR:  relation "public.item" does not exist
LINE 1: select * from public.item;
^
と表示されるばかりです。

どうしたら良いでしょうか。
今日いちにち悩んでおり、ぜひ経験豊かな方々のアドバイスをいただきたく思います。

itemテーブルの構造は、sample_pg_sjis.sqlで以下のように指定しています。
また、postgreSQLの表示の画面も追加します。

CREATE TABLE item
(
  code SERIAL PRIMARY KEY,
  category_code INTEGER ,
  name TEXT,
  price INTEGER,
  level INTEGER,
  popularity INTEGER,
  image TEXT
  information TEXT,
);

INSERT INTO item(category_code, name, price, level, popularity, image, information) VALUES(1, 'スッキリわかるJava入門 第2版', 2808, 1, 3, 'スッキリわかるJava入門 第2版.jpg', 'プログラミング学習のネックとなる「開発環境の準備」と「多発するエラーへの対応」には、ブラウザ上でコーディング、コンパイル、実行ができる仮想開発環境「dokojava」を読者特典として用意し、エラーによく効く「虎の巻」を巻末付録として用意しました。本書でぜひ、Javaプロフェッショナルへの第一歩を踏みだしてください! ');
INSERT INTO item(category_code, name, price, level, popularity, image, information) VALUES(1, 'やさしいJava 第7版', 2786, 1, 2, 'やさしいJava.jpg', '文法の基礎からクラス、オブジェクト指向まで、しっかりと理解できる構成で、無理なく読み進められる書籍です。わかりやすく、読みやすい解説と、動かして理解できる多数のサンプルプログラムで、大切な基本がきちんと身につきます。最新のJava環境であるJava 11に対応し、OpenJDKを使った環境構築も紹介しています。');
INSERT INTO item(category_code, name, price, level, popularity, image, information) VALUES(1, 'Javaの教科書', 2160, 2, 2, 'Javaの教科書.jpg', '「Java」は、スタンドアロンやネットワーククライアント環境をはじめ、サーバサイド、あるいはモバイル環境にいたるまでのアプリケーションの開発に利用されるようになりました。本書は、これら開発のすべてに共通して必要な、プログラムの制御構造とアルゴリズムを学びながらJava言語の文法を習得する流れになっています。');


コード
postgres=# \i ~/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql
DROP DATABASE
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:2: ERROR:  current user cannot be dropped
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:3: ERROR:  role "postgres" already exists
CREATE DATABASE
You are now connected to database "sample" as user "postgres".
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:7: NOTICE:  table "item" does not exist, skipping
DROP TABLE
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:19: ERROR:  syntax error at or near "information"
LINE 10:   information TEXT,
           ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:21: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:22: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:23: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:27: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:28: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:29: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:32: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:33: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:34: ERROR:  relation "item" does not exist
LINE 1: INSERT INTO item(category_code, name, price, level, populari...
                    ^
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:42: NOTICE:  table "category" does not exist, skipping
DROP TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:60: NOTICE:  table "customer" does not exist, skipping
DROP TABLE
CREATE TABLE
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:74: NOTICE:  table "ordered" does not exist, skipping
DROP TABLE
CREATE TABLE
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:88: NOTICE:  table "ordered_detail" does not exist, skipping
DROP TABLE
CREATE TABLE
GRANT
psql:/Users/taishi/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql:101: ERROR:  relation "item" does not exist
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE

コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m6u

    2019/05/02 16:32 編集

    そのデータベースがどんな構造なのか、テーブルはどんなのがあるかわからないから、誰も回答できないっていう。第三者にもわかるように説明を質問本文中に付け加えてほしい。例えばpgAdmin4の画面とか掲載できませんか。

    キャンセル

  • Maeterlinck

    2019/05/02 16:37

    itemテーブルの情報を追記しました。
    他に情報が必要であれば教えていただけると幸いです。
    よろしくお願い申し上げます。

    キャンセル

  • Maeterlinck

    2019/05/02 16:40

    pgAdmin4の画面を追記しました。

    キャンセル

回答 3

+2

itemテーブルがどのスキマーで作成されているか確認して下さい。
pgAdmin4を使用されているとの事なので、GUIで簡単に確認できます。
多分create tableを実行したユーザーのスキーマに作られていると思います。

createでテーブルにスキーマ修飾を付けると、ログインユーザーに左右されません。
※スキーマに対する権限は必要です。

CREATE TABLE public.item(...

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/02 23:51

    お返事ありがとうございます。
    commit; してみました。
    それでも
    sample=> \i ~/eclipse-workspace/Book/WebContent/sample_pg_sjis.sql
    してファイル実行すると
    relation "item" does not exist
    になります。
    ファイル実行すると消えてしまうのでしょうか。
    どのようにすればitemテーブルの存在を認めさせ、データを反映させることができるのでしょう。

    なんどもお聞きしてすみません。
    どうかよろしくお願いします。

    キャンセル

  • 2019/05/03 00:14 編集

    ファイル実行した結果はエラーが出ていないのですか?
    質問の内容と同じようでしたら、エラーが発生していますので失敗していることになります。
    sample_pg_sjis.sql
    の内容もすべて質問に追加してもらえますか?

    キャンセル

  • 2019/05/03 00:18

    お返事ありがとうございます。
    明日の朝、質問に追加させていただきます。
    今日はお休みなさい。

    キャンセル

checkベストアンサー

+1

CREATE TABLE item
(
code SERIAL PRIMARY KEY,
category_code INTEGER ,
name TEXT,
price INTEGER,
level INTEGER,
popularity INTEGER,
image TEXT        -- , が足りない 
information TEXT, -- , が余計
);
```
って話かも?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/03 09:34

    ありがとうございます!
    コンマを正しくしたら、item テーブルが認識されたようです。
    教えていただき、ありがとうございました。

    キャンセル

+1

テーブルを作ったときのPostgreSQL接続ユーザーと、
エラーメッセージを表示しているときの接続ユーザーが異なるとか、
権限が足りないとかじゃないかなと。

9.6のドキュメントで申し訳ないけど、
第21章 データベースロール
5.6. 権限
あたりの情報を確認して、
接続ユーザーがどこまでできる権限を持っているのかを確認したらよいかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/02 17:51

    https://qiita.com/wb773/items/248e6e083b2fe12e820a
    http://www.maguronomizo.net/archives/61
    あたりも合わせて読んでみてほしい。(説明に疲れてきた)

    キャンセル

  • 2019/05/02 19:49

    色々リンクを送っていただき、ありがとうございます。
    どちらも読ませていただきましたが、テーブルが存在しない、という事態の解決法については載っていないと思うのですが。。。
    他にも自分で色々調べてみたが、わからず、どうかもう一度ご回答いただければ幸いです。
    よろしくお願いします。

    キャンセル

  • 2019/05/02 19:55

    itemの他のテーブルはGRANTを与えることができるのに、item だけは存在しない、と言われてしまいます。

    キャンセル

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

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる