2013-07-11 30 views
5

Có vẻ như gae gán ID rất cao cho các mô hình. Khi tôi tải xuống các thực thể của mình, tôi nhận được một số mục rất lớn. Đây là những autogenerated ở nơi đầu tiên. Tải xuống chúng dưới dạng csv không có vấn đề gì. Nhưng xóa dữ liệu hiện có và tải lên lại cùng một dữ liệu sẽ ném một ngoại lệ.GAE: Đã vượt quá số ID được cấp tối đa

Exceeded maximum allocated IDs

Trace:

Traceback (most recent call last): 
    File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1397, in <module> 
    debugger.run(setup['file'], None, None) 
    File "/opt/eclipse/plugins/org.python.pydev_2.7.5.2013052819/pysrc/pydevd.py", line 1090, in run 
    pydev_imports.execfile(file, globals, locals) #execute the script 
    File "/home/kave/workspace/google_appengine/appcfg.py", line 171, in <module> 
    run_file(__file__, globals()) 
    File "/home/kave/workspace/google_appengine/appcfg.py", line 167, in run_file 
    execfile(script_path, globals_) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4247, in <module> 
    main(sys.argv) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 4238, in main 
    result = AppCfgApp(argv).Run() 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 2396, in Run 
    self.action(self) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3973, in __call__ 
    return method() 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3785, in PerformUpload 
    run_fn(args) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/appcfg.py", line 3676, in RunBulkloader 
    sys.exit(bulkloader.Run(arg_dict)) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 4379, in Run 
    return _PerformBulkload(arg_dict) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 4244, in _PerformBulkload 
    loader.finalize() 
    File "/home/kave/workspace/google_appengine/google/appengine/ext/bulkload/bulkloader_config.py", line 384, in finalize 
    self.increment_id(high_id_key) 
    File "/home/kave/workspace/google_appengine/google/appengine/tools/bulkloader.py", line 1206, in IncrementId 
    unused_start, end = datastore.AllocateIds(high_id_key, max=high_id_key.id()) 
    File "/home/kave/workspace/google_appengine/google/appengine/api/datastore.py", line 1965, in AllocateIds 
    return AllocateIdsAsync(model_key, size, **kwargs).get_result() 
    File "/home/kave/workspace/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 612, in get_result 
    return self.__get_result_hook(self) 
    File "/home/kave/workspace/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1863, in __allocate_ids_hook 
    self.check_rpc_success(rpc) 
    File "/home/kave/workspace/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1236, in check_rpc_success 
    raise _ToDatastoreError(err) 
google.appengine.api.datastore_errors.BadRequestError: Exceeded maximum allocated IDs 

thường của Id của tôi là xung quanh 26002 nhưng id mới từ cách đây vài ngày là lớn như 4948283361329150. Đây là những vấn đề gây ra ngay bây giờ. (Nếu tôi thay đổi chúng thành giá trị thấp hơn, tất cả đều ổn, nhưng tôi không tạo ra các id này ở vị trí đầu tiên) Tại sao GAE lại có vấn đề như vậy với các id được tạo riêng của nó?

Rất cám ơn

+0

bạn có thể làm rõ vài điểm: 1, bạn đang xuất dữ liệu cùng với '_key_' và sau đó trước khi nhập dữ liệu này trở lại công cụ ứng dụng, bạn đang xóa dữ liệu công cụ ứng dụng hiện có và sau đó sử dụng id được lưu trong csv để thêm lại dữ liệu đã sửa đổi? 2, bạn đang sử dụng biến đổi nhập khẩu: 'transform.create_foreign_key (Kind)'? –

+0

hi tony, vâng tôi đang xuất dữ liệu cùng với khóa và trước khi nhập dữ liệu trở lại gae, tôi xóa dữ liệu hiện có bằng cách sử dụng id được lưu trong csv (được sản xuất bởi gae ở vị trí đầu tiên). – Houman

Trả lời

2

Đây là sự cố đã biết, được khắc phục trong SDK 1.8.2 hoặc mới hơn. Lưu ý, nếu bạn sử dụng trình tải khối lượng lớn đối với máy chủ ứng dụng của dev, các SDK (1.8.2, 1.8.3) không may có vấn đề bộ tải Bulk riêng biệt với trường hợp sử dụng đó (xem appcfg-py-upload-data-fails-in-google-app-engine-sdk-1-8-2) nhưng không được sản xuất.