Кажется, 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 есть такие проблемы с его собственными созданными идентификаторами?
Большое спасибо
Вы можете уточнить несколько пунктов: 1, вы экспортируете данные вместе с '_key_', а затем перед импортом этих данных обратно в механизм приложения вы удаляете существующие данные движка приложения, а затем используете идентификатор, сохраненный в csv, чтобы добавить обратно измененные данные? 2, вы используете импортное преобразование: 'transform.create_foreign_key (Kind)'? –
hi tony, да я экспортирую данные вместе с ключом и перед импортом данных обратно в gae, я удаляю существующие данные, используя id, сохраненный в csv (который был создан gae на первом месте). – Houman