7

Вопрос по quoted-identifier, postgresql, sql – Ошибка оператора SQL: «столбец .. не существует»

Я пытаюсь из консоли Postgres эту команду:

select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);

и я получил этот ответ:

ERROR:  column "fk_numbers_id" does not exist
LINE 1: ...m from main_sim sim left join main_number num on (FK_Numbers...

но если я просто проверю свою таблицу с помощью:

dbMobile=# \d main_sim

 id              | integer               | not null default

 Iccid           | character varying(19) | not null

...

 FK_Device_id    | integer               | 

 FK_Numbers_id   | integer               | 

Indexes:
    "main_sim_pkey" PRIMARY KEY, btree (id)
    "main_sim_FK_Numbers_id_key" UNIQUE, btree ("FK_Numbers_id")
    "main_sim_Iccid_key" UNIQUE, btree ("Iccid")
    "main_sim_FK_Device_id" btree ("FK_Device_id")
Foreign-key constraints:
    "FK_Device_id_refs_id_480a73d1" FOREIGN KEY ("FK_Device_id") REFERENCES main_device(id) DEFERRABLE INITIALLY DEFERRED
    "FK_Numbers_id_refs_id_380cb036" FOREIGN KEY ("FK_Numbers_id") REFERENCES main_number(id) DEFERRABLE INITIALLY DEFERRED

... как мы видим, столбец существует.

возможно, это синтаксическая ошибка, но я не вижу, что ...

любая помощь будет оценена. Alessio

  • Error: User Rate Limit Exceeded

    от Alessio
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededsorta working demoError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от Alessio
  • Попробуйте ввести FK_Numbers_id в кавычки, например & quot; FK_Numbers_id & quot ;. Совет: никогда не используйте mized case в sql.

    от wildplasser
  • Ты пробовалsim.FK_Numbers_id вместо простоFK_Numbers_id?

    от Branko Dimitrijevic
  • 17

    Нет, колонка

    FK_Numbers_id не существует, только столбец"FK_Numbers_id" существует

    По-видимому, вы создали таблицу с использованием двойных кавычек, и поэтому все имена столбцов теперь чувствительны к регистру, и вам приходится все время использовать двойные кавычки:

    select sim.id as idsim, 
           num.id as idnum 
    from main_sim sim 
       left join main_number num on ("FK_Numbers_id" = num.id);
    

    Напомним, что ужезадокументировано в руководстве:

    Колонкаfoo а такжеFOO идентичны, столбцы"foo" а также"FOO" не.