PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Psycopg2 tidak suka nama tabel yang dimulai dengan huruf kecil

Untuk menambah jawaban lain, perilaku Postresql tentang sensitivitas huruf besar-kecil dari pengidentifikasi (nama tabel dan nama kolom) adalah :

  • Jika nama tidak dikutip, diubah menjadi huruf kecil . Jika tidak, itu tidak akan tersentuh.
  • Setelah itu, kecocokan peka huruf besar/kecil dicoba.

Ini tidak hanya berlaku untuk kueri, tetapi juga untuk manipulasi skema; khususnya:pembuatan tabel.

Aturan emasnya adalah konsistensi:

Jika Anda ingin menulis aplikasi portabel, Anda disarankan untuk selalu mengutip nama tertentu atau tidak pernah mengutipnya

Masalah yang diposting muncul, mungkin, karena nama tabel dan kolom dikutip pada waktu pembuatan (karenanya, mereka tidak dikonversi ke huruf kecil). Jadi, sekarang mereka harus dikutip (dan peka huruf besar/kecil) di semua kueri.

Biasanya, semua berfungsi seperti yang diharapkan.

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. Hitung Kunci Utama berikutnya - dengan format tertentu

  2. psql:FATAL:peran postgres tidak ada

  3. Cara mengonfigurasi AppArmor untuk PostgreSQL dan TimescaleDB

  4. Panduan untuk Pgpool untuk PostgreSQL:Bagian Satu

  5. PostgreSQL:Bagaimana cara melewatkan parameter dari baris perintah?