如何执行'appcfg rollback'命令?

时间:2012-07-26 18:24:34

标签: linux google-app-engine netbeans fedora

在上传项目时,网络出现故障,我不得不停止,上传过程仅完成了31%。现在,当我单击将应用程序部署到Google App引擎时,会生成以下消息:

com.google.appengine.tools.admin.HttpIoException: Error posting to URL: 
https://appengine.google.com/api/appversion/create?app_id=programworks&version=1&
409 Conflict
Another transaction by user suhailgupta03 is already in progress for app: 
s~programworks, version: 1. That user can undo the transaction with 
"appcfg rollback".

Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=programworks&version=1&
409 Conflict
Another transaction by user suhailgupta03 is already in progress for app: 
s~programworks, version: 1. That user can undo the transaction with "appcfg rollback".

我打开我的shell提示符并输入appcfg rollback但是我收到一条消息,说明找不到此命令。我已经安装了谷歌应用引擎作为netbeans的插件。

我保留了Google应用引擎广告库的路径:/home/non-admin/appengine-java-sdk-1.6.6/lib/

请告诉我该如何回滚上一个流程?我非常需要上传 war 文件。!

11 个答案:

答案 0 :(得分:26)

您想要appcfg.sh rollback(在path_to_your_app_engine_sdk/bin/中)。 appcfg针对每种类型的运行时(Python,Java,Go)提供了不同的变体,因此建议的命令有点通用。

如果出于某种原因,您无法轻松访问项目的整个war目录(例如,如果您的IDE仅提供.war文件),则可以执行以下操作:

  1. 制作名为war
  2. 的目录
  3. war 文件夹中创建另一个目录,并将其命名为WEB-INF
  4. 在文件夹WEB-INF中删除两个xml文件,即web.xmlappengine-web.xml。这些文件应分别包含已部署的web.xmlappengine-web.xml文件的内容。
  5. 然后运行以下shell命令(假设您从App Engine Java SDK的bin目录执行它):

    [non-admin@user bin]$ ./appcfg.sh rollback /home/non-admin/NetBeansProjects/PersonalSite/web/war
    

    如果您使用的是Go appengine工具,那么您需要运行:

    $ cd [your go_appengine directory]
    $ ./appcfg.py rollback [your app directory with app.yaml in it]
    

答案 1 :(得分:18)

如果您使用的是Windows,请按照上面给出的相同步骤在DOS提示符下运行命令..

C:\蚀-JEE-的Helios-的win32 \蚀\插件\ com.google.appengine.eclipse.sdkbund le_1.7.3 \ AppEngine上的Java-SDK-1.7.3 \ BIN> appcfg.cmd 回滚 “C:\ home \ myweb \ war”

答案 2 :(得分:13)

另一个简单的方法如下:

  1. 更改app.yaml中的版本号...
  2. 然后部署新版本
  3. 最后通过google app engine webform
  4. 删除旧版本

    编辑:

    回答dg99的问题: 您需要更改的版本代码取决于您(它是您的应用程序的版本)

答案 3 :(得分:2)

这对我有用!! (赢得操作系统)

C:\ eclipse-jee-helios-win32 \ eclipse \ plugins \ com.google.appengine.eclipse.sdkbund le_1.7.3 \ appengine-java-sdk-1.7.3 \ bin> appcfg.cmd回滚C:\ home \ myweb \ war

答案 4 :(得分:2)

如果你正在使用eclipse& maven build envrioment, 也许你是通过maven命令上传应用程序, appengine:update ,对吧?

然后,当你遇到类似的问题" 409 Conflict"。 您可以在eclipse-> project-> run as-> maven build ...->上使用maven命令。 的"应用服务引擎:回滚"

试试这个。我通过这种方式解决了问题

答案 5 :(得分:1)

尝试回滚一段时间后没有任何成功(我被提示用户/通过无休止)我认为这可能是因为我的两个阶段/因素身份验证,

所以以下方式解决了这一切:

  1. D:\Java\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.8.3\appengine-java-sdk-1.8.3\bin>中打开命令提示符( cmd.exe )(或在其他地方查找appcfg.cmd的位置)

  2. 输入:appcfg.cmd --oauth2 rollback D:/Java/workspace/my_app/war

  3. 然后我的浏览器中提示oauth2令牌,复制并返回到cmd而不是粘贴

  4. 就是这样!部署到App Engine再次运行!

答案 6 :(得分:1)

将此用于Android Studio中开发的后端:

cd project_path/project_name/module_name/src/main
appcfg.sh rollback webapp

答案 7 :(得分:1)

对我来说,以下工作正常,我的app.yaml所在的开发目录。

appcfg.py rollback .

我使用的是Python SDK,因为<app-directory><war-location>被称为{{1}},因此可能与Java不同。

答案 8 :(得分:0)

以下是使用命令提示符在Windows 7中回滚的步骤:

1)首先为python设置环境变量。(以便命令提示符接受命令“python”)。

2)然后键入:“python”give_space“appcfg.py文件的路径”give_space“rollback”give_space“项目路径”。(请注意,您应该在引号中指定路径 )。

答案 9 :(得分:0)

当您使用Maven时,appengine:rollback命令有效。 即使它是Eclipse Maven项目,它也可以工作。

要在Eclipse Maven中回滚,请遵循以下流程 -

运行 - &gt;构建 - &gt;目标(appengine:rollback) - &gt;申请 - &gt;运行

答案 10 :(得分:0)

可以确认上面澄清的一些答案。

如果使用mvn appengine:update进行部署,则可以使用mvn appengine:rollback进行回滚。