2
Google App Engineデータストアに小さなTXTファイル(4KB)をアップロードしようとしています。私はlocalyアプリケーションをテストするときに問題はなく、ファイルは正常に保存されます。私はGAEにしようとするが、私は次のエラーを取得:javax.jdo.JDOException:文字列プロパティファイルが長すぎます。 1000000文字を超えることはできません
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:480)
at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:380)
at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:746)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
ファイルが含まれているエンティティのJDOのマッピングは以下の通りです:GAEコンソールで
javax.jdo.JDOException: string property file is too long. It cannot exceed 1000000 characters.
NestedThrowables:
java.lang.IllegalArgumentException: string property file is too long. It cannot exceed 1000000 characters
を、ログは以下の言いました:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class AppointmentEntity implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent(serialized = "true")
private DownloadableFile file;
そしてDownloadableFileは次のとおりです。
public class DownloadableFile implements Serializable {
private byte[] content;
private String filename;
private String mimeType;
何が問題なの?私はセッションのサイズとエンティティのサイズについて何かを読んでいますが、ファイルサイズが小さいと私はこれらの理論を破棄します。
データストアエンティティあたりの最大サイズは、[1メガバイト]です(http://code.google.com/appengine/ docs/python/datastore/overview.html#Datastore_Statistics)。あなたのテキストファイルがわずか4KBであることを見て、何とかそれをDSに何度も追加できますか?あなたが限界に打ち間違っている理由を説明するかもしれません。 –
私はそうは思わない、更新は一度だけ実行されます。エンティティのサイズが1MBより大きい場合、ローカルデータストアは不平を言いますか? –