sql >> データベース >  >> RDS >> PostgreSQL

エラー:キー...がテーブルに存在しません

    私の最初の推測は、あなたが2つを扱っているということです さまざまなテーブル 名前付きbg 。スキーマtigerに1つ 、およびtigerの前にある非公開スキーマの別の1つ search_path -またはtigerがsearch_pathにありません まったく。

    bgという名前のすべてのテーブルを検索します (大文字と小文字を区別)現在のデータベースのすべてのスキーマ:

    SELECT * FROM pg_tables WHERE tablename = 'bg';
    

    search_pathを理解するには 設定:

    Postgres DBクラスターの構造を理解するには:

    そうでない場合は、インデックスが破損している可能性があります。まず、 REINDEXを試してみます。

    REINDEX bg_pkey;
    

    継承!

    追加したテーブル定義に表示されます:

    bg_id ='470370111002'の行が疑われます 実際には子テーブルに住んでいます tiger_data.tn_bg 。ただし、FK制約は親テーブルを参照します 。 FK制約は継承されません。
    クエリを実行すると何が得られますか:

    SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

    私の仮説が成り立つ場合、行がない警告 マニュアルの継承ページ

    関連:




    1. リレーショナルデータベースで継承モデリングを行う方法は?

    2. カーソルを使用せずに各行のSQL呼び出しストアドプロシージャ

    3. JavaScriptはMySQLと接続できますか?

    4. Entity Framework クエリのパフォーマンスは、未加工の SQL 実行と極端に異なります