sql >> Database >  >> RDS >> PostgreSQL

heroku, postgreSQL, django, comments, Tastypie:Geen enkele operator komt overeen met de opgegeven naam en argumenttype(s). Mogelijk moet u expliciete typecasts toevoegen

PostgreSQL is "sterk getypeerd" - dat wil zeggen, elke waarde in elke zoekopdracht heeft een bepaald type, ofwel expliciet gedefinieerd (bijvoorbeeld het type van een kolom in een tabel) of impliciet (bijvoorbeeld de waarden die worden ingevoerd in een WHERE clausule). Alle functies en operators, inclusief = , moeten worden gedefinieerd om specifieke typen te accepteren - dus er is bijvoorbeeld een operator voor VarChar = VarChar , en een andere voor int = int .

In jouw geval heb je een kolom die expliciet is gedefinieerd als type int , maar je vergelijkt het met een waarde die PostgreSQL heeft geïnterpreteerd als type text .

SQLite, aan de andere kant, is "zwak getypeerd" - waarden worden vrijelijk behandeld als zijnde van het type dat het beste past bij de actie die wordt uitgevoerd. Dus in uw dev SQLite-database de bewerking '42' = 42 kan prima worden berekend, waarbij PostgreSQL een specifieke definitie van VarChar = int nodig heeft (of text = int , text zijnde het type voor onbegrensde strings in PostgreSQL).

Nu zal PostgreSQL soms wees behulpzaam en "cast" uw waarden automatisch om ervoor te zorgen dat de typen overeenkomen met een bekende operator, maar vaker, zoals de hint zegt, moet u dit expliciet doen. Als u de SQL zelf zou schrijven, zou een expliciete type-case eruit kunnen zien als WHERE id = CAST('42' AS INT) (of WHERE CAST(id AS text) = '42' ).

Aangezien dat niet het geval is, moet u ervoor zorgen dat de invoer die u aan de querygenerator geeft een echt geheel getal is, niet alleen een tekenreeks die uit cijfers bestaat. Ik vermoed dat dit zo simpel is als het gebruik van fields.IntegerField in plaats van fields.CharField , maar ik ken Django niet, of zelfs Python niet, dus ik dacht ik geef je de achtergrond in de hoop dat je het vanaf daar kunt overnemen.



  1. Hoe te groeperen op twee kolommen in SQL

  2. Installeer Mtop (MySQL Database Server Monitoring) in RHEL/CentOS 6/5/4, Fedora 17-12

  3. ophalen van meerdere kolommen groeperen op datum intervall

  4. E-mail verzenden vanuit MySQL 5.1