çæ§ã®ãç¥æµãæåãããŠãã ããã
xmlãã¡ã€ã«ã§
<datastore-index kind="GuestBook"
ancestor="false">
<property name="oya_id" direction="asc" />
<property name="date" direction="desc" />
</datastore-index>
ãšèšè¿°ããŠãããŸããŠã
jdoãã¡ã€ã«ã¯ã
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class GuestBook {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private Date date;
@Persistent
private String hn;
@Persistent
private String title;
@Persistent
private String content;
@Persistent
private Long oya_id;
@Persistent
private String pwd;
/**
* ã³ã³ã¹ãã©ã¯ã¿
* @param horseName
*/
public GuestBook(Date date, String hn, String title, String content,
Long oya_id, String pwd){
this.date = date;
this.hn = hn;
this.title = title;
this.content = content;
this.oya_id = oya_id;
this.pwd = pwd;
}
以äžãã¢ã¯ã»ããµã¡ãœãããªã®ã§çç¥ããŸãã
ããããããšã¯ãoya_idãåãããŒã¿ãdataã®æ¥ä»é ã§ãœãŒããã衚瀺ãããããšæã£ãŠããŸãã
å
·äœçã«ã¯ã
Query queryRes = pm.newQuery(GuestBook.class);
queryRes.setFilter("oya_id == parent_id");
queryRes.declareParameters("Long parent_id");
queryRes.setOrdering("date desc");
List<GuestBook> reslist = (List<GuestBook>) queryRes.execute
(GaeUtil.NullLong(request.getParameter("oya_id")));
ãšãããããšæã£ãŠããã®ã§ãããindexããšã©ãŒãªã®ã§äžæãåäœããŸããã
indexã®ååŸ©æ¹æ³ãæããŠäžããã
ãšã©ãŒå
容ã®è©³çްãã€ãããªããã
æ¬çªç°å¢ã«ãŠã[no matching index found]ãçºç
ãšããåæã§ããã
App engineã®ç®¡çç»é¢ã«ãã[Datastore Indexes]ã«ãŠ
Indexã衚瀺ãããäºã確èªãã ããã
ã»è©²åœã®Indexã衚瀺ãããªãå Žå
ããIndexãååšããªãäºã«ãããšã©ãŒãçºçããŠãããšæããŸãã
ããïŒããŒã«ã«ç°å¢ã§ã¯ãšãªãŒãå®è¡ããéäœæããã
ãããdatastore-indexes-auto.xmlã䜿çšããããšã«ãã
ããããã¹ã¯è»œæžããããšæããŸããïŒ
ã»è©²åœã®Indexã衚瀺ãããŠããå Žåã
ãIndexã®Statusã確èªããŠãã ããã
ãStatusã[Building]ã®å Žåã¯ãããŒã¿ååŸæã«
ã[no matching index found]ãçºçããŸãã
ãStatus[Building]ã¯ãæéãçµéãããš[Serving]ã«å€ãããŸãã
ãïŒãã°ããæéããããå Žåãããããã§ããïŒ
ãStatusã[Serving]ã®ç¶æ
ã§ããã
ãæ£åžžã«ããŒã¿ååŸãè¡ããããšæããŸãã
ãšã©ãŒå
容çã«çžéç¹ããããŸããã
æ
å ±ãããããé¡ãããŸãã
ïŒäžèšã®çŸè±¡ã§ãªãå Žåã¯ãããŒã¿ä»¶æ°ãªã©ãã®ä»ã®æ
å ±ãå¿
èŠã«ãªããããããŸããïŒ
以äžã§ãã
埡確èªäžããã
2010幎1æ3æ¥17:44 yasuâ <yasu...@gmail.com>:
> --
>
> ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããGoogle-App-Engine-Japanãã®ç»é²è
ã«éãããŠããŸãã
> ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãgoogle-app-...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
> ãã®ã°ã«ãŒãããéäŒããã«ã¯ãgoogle-app-engine...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
> 詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/google-app-engine-japan?hl=ja ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã
>
>
ãšã©ãŒå
容ã¯ã
ãcom.google.appengine.tools.admin.AdminException: Unable to update
app: Error posting to URL: http://appengine.google.com/api/datastore/index/add?app_id=crane-member&version=9&
400 Bad Request
Cannot build indexes that are in state ERROR.
To vacuum and rebuild your indexes:
1. Create a backup of your index.yaml specification.
2. Determine the indexes in state ERROR from your admin console:
https://appengine.google.com/datastore/indexes?&app_id=crane-member
3. Remove the definitions of the indexes in ERROR from your index.yaml
file.
4. Run "appcfg.py vacuum_indexes your_app_dir/"
5. Wait until the ERROR indexes no longer appear in your admin
console.
6. Replace the modified version of your index.yaml file with the
original.
7. Run "appcfg.py update_indexes your_app_dir/"
at com.google.appengine.tools.admin.AppAdminImpl.update
(AppAdminImpl.java:62)
at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy
(AppEngineBridgeImpl.java:271)
at
com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace
(DeployProjectJob.java:148)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run
(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.io.IOException: Error posting to URL:
http://appengine.google.com/api/datastore/index/add?app_id=crane-member&version=9&
400 Bad Request
Cannot build indexes that are in state ERROR.
To vacuum and rebuild your indexes:
1. Create a backup of your index.yaml specification.
2. Determine the indexes in state ERROR from your admin console:
https://appengine.google.com/datastore/indexes?&app_id=crane-member
3. Remove the definitions of the indexes in ERROR from your index.yaml
file.
4. Run "appcfg.py vacuum_indexes your_app_dir/"
5. Wait until the ERROR indexes no longer appear in your admin
console.
6. Replace the modified version of your index.yaml file with the
original.
7. Run "appcfg.py update_indexes your_app_dir/"
at com.google.appengine.tools.admin.ServerConnection.send
(ServerConnection.java:143)
at com.google.appengine.tools.admin.ServerConnection.post
(ServerConnection.java:81)
at com.google.appengine.tools.admin.AppVersionUpload.send
(AppVersionUpload.java:522)
at com.google.appengine.tools.admin.AppVersionUpload.updateIndexes
(AppVersionUpload.java:240)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
(AppVersionUpload.java:132)
at com.google.appengine.tools.admin.AppAdminImpl.update
(AppAdminImpl.java:56)
... 4 more
ã
javaçãªã®ã§ããindex.yaml ããã¡ã€ã«ããªãã®ã§
ã©ãããã°ããã®ãšã©ãŒãåããã®ãè§£ããªãç¶æ
ãšãªã£ãŠããŸãã
ããã§ãããã¡ãã»ãŒãžã«è¡šç€ºãããŠããvacuum_indexes(æªäœ¿çšINDEXã®åé€)
ã¯ã
çŸåšã®ãšããpythonçã§ã®ã¿å®è¡ã§ããã³ãã³ãã ãšæããŸãã®ã§
ãGoogle App Engine SDK for Pythonãã®ç°å¢ãäœæããå¿
èŠããããšæããŸãã
幎æ«å¹Žå§çšã®ç·æ¥åãåãããã³ãã¬ãŒã
(çŸåšã幎æ«å¹Žå§ã®ç¯å²ãã¯ãäžæã§ããïŒ
ã«ãŠåãåããããããã®ã劥åœãªå¯Ÿå¿ã«ãªããšæããŸããã
http://code.google.com/p/googleappengine/issues/entry?template=Production%20issue
èè¶³ã§ããã
Google App Engine SDK for Pythonã§ã®
vacuum_indexesã³ãã³ãå®è¡ãŸã§ã®æé ã
ä¹±æã§ã¯ãããŸããèšèŒããããŸãã®ã§ã
èå³ãããã°ãã詊ããã ããã
(ç¶æ
ãServingã®Indexã§ãããåé€ã§ããã®ã§ããã»ã»ïŒ
ã»ããŒã«ã®ã€ã³ã¹ããŒã«
python2.5.2
http://www.python.org/ftp/python/2.5.2/python-2.5.2.msi
ã»ããŠã³ããŒãâã€ã³ã¹ããŒã«
Google App Engine SDK for Python
http://googleappengine.googlecode.com/files/GoogleAppEngine_1.3.0.msi
ã»ããŠã³ããŒãâã€ã³ã¹ããŒã«
ã»PJãã¡ã€ã«ã®äœæ
ãã¹ã¯ãããäžã®ãGoogle App Engine Launcherããèµ·å
ã¡ãã¥[file]â[Create New Application]
èµ·åãããã€ã¢ãã°ç»é¢
[Application Name]:[çŸåšã®appid](1)
[Parent Directory]:[ä»»æã®ãã©ã«ããŒãæå®](2)
â[Create]ãã¿ã³ã¯ãªãã¯
(2)ã§æå®ãããã©ã«ããŒã«(1)ã®ãã©ã«ããäœæãããŸã
app.yaml/index.yamlãªã©ã®ãã¡ã€ã«ãååšããäºã確èªããŠäžããã
ã»vacuum_indexesã®å®è¡
以äžã®ã³ãã³ããå®è¡ããŠäžããã
[Google App Engine SDKã€ã³ã¹ããŒã«ãã©ã«ããŒ]\appcfg.py vacuum_indexes
[(2)+(1)ãã©ã«ã]
ã³ãã³ãã®è©³çް
http://code.google.com/intl/ja/appengine/docs/python/tools/uploadinganapp.html#Deleting_Unused_Indexes
ããããšã©ãŒã³ãã³ãå®è¡æã«ãšã©ãŒçºçããããã§ãããã
èšå®ãã¡ã€ã«ïŒapp.yamlïŒã®å
容ã確èªããŠäžããã
http://code.google.com/intl/ja/appengine/docs/python/config/appconfig.html#About_app_yaml
ã»ã³ãã³ãå®è¡åŸ
1.ã¡ãŒã«ã¢ãã¬ã¹ã»ãã¹ã¯ãŒãã®å
¥åïŒå
¥åãæ±ãããããšæããŸããïŒ
2.ãã®åŸãIndexåé€ç¢ºèªã衚瀺ãããŸãã®ã§[y]ãéžæããŠäžããã
äžèšã®æé ãè¡ãäºã«ãã
éåžžã管çç»é¢[Datastore Indexes]ã«ãŠ
該åœIndexã®Statusã[deleting] ãšãªã
ãã°ãããããšã
管çç»é¢[Datastore Indexes]ãã該åœINDEXã¯è¡šç€ºãããªããªããŸãã
該åœINDEXã衚瀺ãããªããªã£ãæç¹ã§åé€ã¯å®äºãšãªããŸãã
以äžã§ãã
>--
>
>ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããGoogle-App-Engine-Japanãã®ç»é²è
ã«é
>ãããŠããŸãã
>ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãgoogle-app-...@googlegroups.com ã«ã¡ãŒã«
>ãéä¿¡ããŠãã ããã
>ãã®ã°ã«ãŒãããéäŒããã«ã¯ãgoogle-app-engine-japan+
>unsub...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
>詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/google-app-engine-japan?hl=ja
>ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã