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

heroku, postgreSQL, Django, comments, deliciouspie:Tidak ada operator yang cocok dengan nama dan tipe argumen yang diberikan. Anda mungkin perlu menambahkan gips tipe eksplisit

PostgreSQL adalah "sangat diketik" - yaitu, setiap nilai dalam setiap kueri memiliki tipe tertentu, baik yang didefinisikan secara eksplisit (mis. tipe kolom dalam tabel) atau secara implisit (mis. nilai dimasukkan ke dalam WHERE ayat). Semua fungsi dan operator, termasuk = , harus didefinisikan sebagai menerima tipe tertentu - jadi, misalnya ada operator untuk VarChar = VarChar , dan yang berbeda untuk int = int .

Dalam kasus Anda, Anda memiliki kolom yang secara eksplisit didefinisikan sebagai tipe int , tetapi Anda membandingkannya dengan nilai yang ditafsirkan oleh PostgreSQL sebagai tipe text .

SQLite, di sisi lain, "diketik dengan lemah" - nilai diperlakukan secara bebas sebagai jenis apa pun yang paling sesuai dengan tindakan yang dilakukan. Jadi dalam database dev SQLite Anda operasi '42' = 42 dapat dihitung dengan baik, di mana PostgreSQL memerlukan definisi spesifik VarChar = int (atau text = int , text menjadi tipe untuk string tak terbatas di PostgreSQL).

Sekarang, PostgreSQL akan kadang membantu dan secara otomatis "menyalurkan" nilai Anda untuk membuat tipenya cocok dengan operator yang dikenal, tetapi lebih sering, seperti yang dikatakan petunjuknya, Anda perlu melakukannya secara eksplisit. Jika Anda menulis SQL sendiri, tipe kasus eksplisit bisa terlihat seperti WHERE id = CAST('42' AS INT) (atau WHERE CAST(id AS text) = '42' ).

Karena tidak, Anda perlu memastikan bahwa input yang Anda berikan ke pembuat kueri adalah bilangan bulat yang sebenarnya, bukan hanya string yang kebetulan terdiri dari angka. Saya menduga ini sesederhana menggunakan fields.IntegerField daripada fields.CharField , tapi saya sebenarnya tidak tahu Django, atau bahkan Python, jadi saya pikir saya akan memberi Anda latar belakang dengan harapan Anda bisa mengambilnya dari sana.



  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:Ubah PEMILIK pada semua tabel secara bersamaan di PostgreSQL

  2. VACUUM PostgreSQL dan ANALISIS Tips Praktik Terbaik

  3. Kembalikan baris SETOF dari fungsi PostgreSQL

  4. Bagaimana cara kerja tampilan keamanan_barrier PostgreSQL?

  5. Menggunakan fungsi jendela dalam pernyataan pembaruan