2013-07-11 4 views
5

Кажется, gae присваивает модели очень высокие идентификаторы. Когда я загружаю свои сущности, я получаю для некоторых записей очень большие числа. Они были автогенерированы на первом месте. Скачивать их как csv не составит труда. Но удаление существующих данных и повторная загрузка одних и тех же данных вызывают исключение.GAE: превышены максимальные выделенные идентификаторы

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. Это вызывает проблемы сейчас. (Если я изменю их на более низкие значения, все будет хорошо, но я не создавал эти идентификаторы на первом месте). Почему у GAE есть такие проблемы с его собственными созданными идентификаторами?

Большое спасибо

+0

Вы можете уточнить несколько пунктов: 1, вы экспортируете данные вместе с '_key_', а затем перед импортом этих данных обратно в механизм приложения вы удаляете существующие данные движка приложения, а затем используете идентификатор, сохраненный в csv, чтобы добавить обратно измененные данные? 2, вы используете импортное преобразование: 'transform.create_foreign_key (Kind)'? –

+0

hi tony, да я экспортирую данные вместе с ключом и перед импортом данных обратно в gae, я удаляю существующие данные, используя id, сохраненный в csv (который был создан gae на первом месте). – Houman

ответ

2

Это известная проблема, фиксируется в 1.8.2 или более поздней версии SDK.

Обратите внимание, что если вы используете bulkloader против dev-сервера приложений, у этих SDK (1.8.2, 1.8.3), к сожалению, есть отдельная проблема с загрузчиком с этим вариантом использования (см. appcfg-py-upload-data-fails-in-google-app-engine-sdk-1-8-2), но не в производстве.