Tôi có một truy vấn đơn giản trên của django xây dựng trong mô hình ý kiến và nhận được báo lỗi dưới đây với cơ sở dữ liệu PostgreSQL Heroku của:heroku, postgreSQL, django, comments, tastypie: Không có toán tử nào khớp với tên và kiểu đối số đã cho. Bạn có thể cần phải thêm loại rõ ràng phôi
DatabaseError: operator does not exist: integer = text LINE 1:
... INNER JOIN "django_comments" ON ("pi ns_pin"."id" = "django_...
^
HINT: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
Sau khi googling xung quanh nó dường như lỗi này đã được giải quyết nhiều lần trước đây trong django, nhưng tôi vẫn nhận được nó (tất cả các vấn đề liên quan đã được đóng cửa 3-5 năm trước). Tôi đang sử dụng phiên bản django 1.4 và phiên bản mới nhất của món ăn ngon.
Các truy vấn được thực hiện theo các bộ lọc orm và hoạt động hoàn hảo với cơ sở dữ liệu phát triển của tôi (sqlite3):
class MyResource(ModelResource):
comments = fields.ToManyField('my.api.api.CmntResource', 'comments', full=True, null=True)
def build_filters(self, filters=None):
if filters is None:
filters = {}
orm_filters = super(MyResource, self).build_filters(filters)
if 'cmnts' in filters:
orm_filters['comments__user__id__exact'] = filters['cmnts']
class CmntResource(ModelResource):
user = fields.ToOneField('my.api.api.UserResource', 'user', full=True)
site_id = fields.CharField(attribute = 'site_id')
content_object = GenericForeignKeyField({
My: MyResource,
}, 'content_object')
username = fields.CharField(attribute = 'user__username', null=True)
user_id = fields.CharField(attribute = 'user__id', null=True)
Bất kỳ ai có bất cứ kinh nghiệm với việc xung quanh lỗi này mà không cần viết SQL thô?
Giống như lỗi nói, bạn đang cố gắng so sánh số nguyên với giá trị văn bản. Ngừng làm điều đó và lỗi sẽ biến mất. –
Ngẫu nhiên, đây là một ví dụ tốt về lý do tại sao việc thử nghiệm nên được thực hiện với một môi trường tương tự nhất có thể với nơi bạn triển khai: tuy nhiên nhiều khung công tác tuyên bố trừu tượng về nó, một thứ phức tạp như DBMS bị ràng buộc có hành vi và giới hạn khác nhau . – IMSoP
IMSoP, có thực sự tôi đã học được bài học hôm nay! Chỉ cần thay đổi DB phát triển của tôi sang PostgreSQL để làm việc về vấn đề này. – arctelix