2013-07-11 12 views
5

Sembra che gae assegni ID molto alti ai modelli. Quando scarico le mie entità, ottengo per alcune voci numeri molto grandi. Questi sono stati autogenerati in primo luogo. Scaricarli come csv non è un problema. Ma cancellare i dati esistenti e ricaricare gli stessi dati genera un'eccezione.GAE: ID massimo assegnato superato

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 

Di solito i miei ID sono intorno 26002 ma i nuovi id da qualche giorno fa, sono grandi come 4948283361329150. Questi stanno causando problemi ora. (Se li cambio a valori più bassi, va tutto bene, ma non ho generato questi ID al primo posto) Perché GAE ha problemi con i propri ID generati?

Molte Grazie

+0

puoi chiarire alcuni punti: 1, stai esportando i dati insieme a '_key_' e poi prima di importare questi dati nel motore delle app, stai cancellando i dati del motore delle app esistenti e poi usando l'ID salvato in csv per aggiungere indietro i dati modificati? 2, stai usando la trasformazione di importazione: 'transform.create_foreign_key (Kind)'? –

+0

hi tony, sì sto esportando i dati con la chiave e prima di importare i dati in gae, sto cancellando i dati esistenti usando l'id salvato in csv (che è stato prodotto da gae in primo luogo). – Houman

risposta

2

Questo è un problema noto, fissato nelle 1.8.2 o successive SDK.

Nota: se si utilizza il bulkloader contro lo sviluppatore di app, questi SDK (1.8.2, 1.8.3) presentano sfortunatamente un problema di scaricatore a carico separato con tale caso d'uso (vedere appcfg-py-upload-data-fails-in-google-app-engine-sdk-1-8-2) ma non in produzione.

Problemi correlati