PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Psycopg2 не харесва имената на таблици, които започват с малка буква

За да добавите към другия отговор, поведението на Postresql относно чувствителността към малки и големи букви на идентификаторите (имена на таблици и имена на колони) е:

  • Ако името не е в кавички, то се преобразува в малки букви . В противен случай остава недокоснат.
  • След това съвпадение с чувствителност към главни букви се опитва.

Това важи не само за заявки, но и за манипулиране на схеми; по-специално:създаване на таблица.

Златното правило е последователността:

Ако искате да пишете преносими приложения, съветваме ви винаги да цитирате определено име или никога да не го цитирате

Публикуваният проблем възникна, вероятно, защото имената на таблици и колони бяха цитирани по време на създаване (следователно те не бяха преобразувани в малки букви). И така, сега те трябва да бъдат цитирани (и с отчитане на главни и малки букви) във всички заявки.

Обикновено всичко работи според очакванията.

db=# create table Xxx (id integer); -- unquoted, will be converted to lowercase
CREATE TABLE
db=# select * from xXx;    -- this works ok
id
----
(0 rows)
db=# create table "Xxxx" (id integer);  -- will be left untouched
CREATE TABLE
db=# select * from xxxx;                -- bad
ERROR:  relation "xxxx" does not exist
LINE 1: select * from xxxx;
db=# select * from Xxxx;                -- bad
ERROR:  relation "xxxx" does not exist
LINE 1: select * from Xxxx;
^
db=# select * from "Xxxx";               -- ok
id
----
(0 rows)

db=# \dt *xx*
List of relations
Schema | Name | Type  |  Owner
--------+------+-------+----------
public | Xxxx | table | postgres
public | xxx  | table | postgres


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съвети за най-добри практики за PostgreSQL VACUUM and ANALYZE

  2. PostgreSQL:ГРЕШКА:42601:изисква се списък с дефиниции на колони за функции, връщащи запис

  3. Как да картографирате PostgreSQL enum с JPA и Hibernate

  4. postgres - където в (списък) - колоната не съществува

  5. Рамка на обект PostgreSQL