2013-07-11 3 views
5

gae가 매우 높은 ID를 모델에 할당합니다. 엔티티를 다운로드 할 때 항목 수가 매우 높습니다. 이들은 처음에 자동 생성되었습니다. csv로 다운로드하는 것은 문제가되지 않습니다. 그러나 기존 데이터를 삭제하고 동일한 데이터를 다시 업로드하면 예외가 발생합니다.GAE : 할당 된 최대 ID를 초과했습니다

Exceeded maximum allocated IDs

추적 :

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 

보통 내 아이디의 주위 26002하지만 며칠 전부터 새로운 아이디의이 4948283361329150만큼 크다. 이것들은 현재 문제를 일으키고 있습니다. (내가 값을 낮추기 위해 그것들을 변경한다면, 그것들은 모두 괜찮지 만, 처음에는이 id들을 생성하지 않았다.) 왜 GAE는 자체적으로 생성 된 id에 그러한 문제를 가지고 있는가?

많은 감사

+0

몇 가지 사항을 명확히 해주십시오 : 1, 데이터를 '_key_'와 함께 내보내고이 데이터를 다시 앱 엔진으로 가져 오기 전에 기존 앱 엔진 데이터를 삭제 한 다음 csv에 저장된 ID를 사용하여 다시 추가합니다. 수정 된 데이터? 2, 당신은 가져 오기 변환을 사용하고 있습니까 :'transform.create_foreign_key (Kind)'? –

+0

안녕하세요 tony, 예. 키와 함께 데이터를 내보내고 gae로 데이터를 가져 오기 전에 csv에 저장된 ID를 사용하여 기존 데이터를 삭제합니다 (gae에서 첫 번째로 생성됨). – Houman

답변

2

이있는 1.8.2 이상 버전의 SDK에 고정 알려진 문제.

dev appserver에 대해 bulkloader를 사용하는 경우 해당 SDK (1.8.2, 1.8.3)는 유감스럽게도 해당 유스 케이스 (appcfg-py-upload-data-fails-in-google-app-engine-sdk-1-8-2 참조)에 별도의 대량로드 프로그램 문제가 있지만 프로덕션에서는 그렇지 않습니다.

관련 문제