简体   繁体   中英

How can I resolve my error in appengine

What does it mean?

Trace:

Traceback (most recent call last):
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/s~montaoproject/refactor.383610131340137947/main.py", line 3222, in post
    value=cityID),
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/search/search.py", line 1462, in __init__
    Field.__init__(self, name, value)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/search/search.py", line 892, in __init__
    self._value = self._CheckValue(value)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/search/search.py", line 1469, in _CheckValue
    (value, MIN_NUMBER_VALUE, MAX_NUMBER_VALUE))
ValueError: value, 6463062097788928 must be between -2147483647 and 2147483647

The offending line 3222 is value=cityID and in context it's when my index is built.

doc = search.Document(doc_id=str(ad.key()), fields=[
                search.TextField(name='title', value=ad.title),
                search.TextField(name='text', value=ad.text),
                search.TextField(name='city', value=ad.city),
                search.TextField(name='region', value=ad.region),
                search.NumberField(name='cityID',
                                   value=cityID),
                search.NumberField(name='regionID',
                                   value=regionID),
                search.NumberField(name='category',
                                   value=int(ad.category)),
                search.NumberField(name='constant', value=1),
                search.TextField(name='adID', value=str(ad.key().id())),
                search.TextField(name='name', value=ad.name),
                search.DateField(name='date',
                                 value=datetime.now().date()),
                search.NumberField(name='price', value=price),
                search.NumberField(name='mileage', value=mileage),
                search.NumberField(name='regdate', value=regdate),
                search.TextField(name='type', value=ad.type),
                search.TextField(name='currency', value=ad.currency),
                search.NumberField(name='company_ad',
                                   value=company_ad),
                search.NumberField(name='hour',
                                   value=datetime.now().hour),
                search.NumberField(name='minute',
                                   value=datetime.now().minute),
                search.NumberField(name='hasimages',
                                   value=hasimages),
                search.TextField(name='url', value=ad.url),
                search.TextField(name='serving_url', value=serving_url),
                ], language=language)
            search.Index(name='koolbusiness').put(doc)

2147483647 is the maximum positive value for a 32-bit signed binary integer , which is used for this index. Ids in the datastore are 64-bit, so you can't use them as NumberField .

However, if you think about it, the ids are non-sequential, so you can't really do anything with them by sorting, and can only use them for equality in queries, in which case a TextField will suffice.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM