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

Id kolom doktrin tidak ada di PostgreSQL

user adalah kata khusus . Ini adalah alias untuk current_user .

regress=> SELECT * FROM user;
 current_user 
--------------
 myusername
(1 row)

Jika Anda ingin menggunakan user sebagai nama tabel, karena ini adalah kata yang dicadangkan, Anda harus mengutip pengenalnya , misalnya:

SELECT id FROM "user";

ORM Anda harus mengutip semua pengidentifikasi, atau setidaknya kata-kata yang dicadangkan. Kegagalan untuk melakukannya adalah bug di ORM Anda. Anda dapat mengatasi bug ORM dengan menggunakan kata non-reserved sebagai nama tabel.

Saya pikir ini sedikit kutil di psql yang secara otomatis mengutip pengidentifikasi yang Anda berikan ke perintah garis miring terbalik. Jadi \d user akan berfungsi tetapi select * from user tidak akan. Anda harus menulis \d "user" . Masalah yang sama muncul dengan sensitivitas huruf besar-kecil di mana \d MyTable berfungsi tetapi SELECT * FROM MyTable tidak akan bekerja, Anda harus menulis SELECT * FROM "MyTable" .

Akan lebih baik untuk memberikan HINT pesan tentang ini dalam kesalahan. Sayangnya pengurai dan perencana tidak benar-benar memiliki informasi yang cukup pada saat kesalahan "kolom tidak ada" dibuat untuk mengetahui bahwa Anda awalnya menulis kata kunci, yang dilihatnya hanyalah pemindaian fungsi pada saat itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django Postgresql menjatuhkan default kolom saat bermigrasi

  2. Deploy Postgres11 ke Elastic Beanstalk - Memerlukan /etc/redhat-release

  3. CTE dan Paradoks Ulang Tahun

  4. Permintaan PostgreSQL untuk mengembalikan hasil sebagai daftar yang dipisahkan koma

  5. Postgresql:Membuat skrip eksekusi psql dengan kata sandi