【问题标题】:Google App Engine - Deployment not workingGoogle App Engine - 部署不起作用
【发布时间】:2015-04-17 17:52:09
【问题描述】:

我有一个针对 Google Cloud SQL 实例Google App Engine 项目(一个 API)。我有一个在本地运行的 API 和 SQL 实例的精确副本。

当我在开发(本地)上执行项目时,我可以很好地探索 API。然而,当我继续部署时,所有调用都返回空。

这是 API 代码(Java):

@ApiMethod(
        name = "test.users.list",
        path = "test/users/list",
        httpMethod = "get"
)
public UserList testUserList ()
{
    UserList users = UserList.getAll();
    return users;
}

这是它返回的本地

{
 "users": [
  {
   "id": "3",
   "firstName": "Test",
   "lastName": "User",
   "email": "test@test.com",
   "password": "12fc892642c48a8227410f5b6722e1edeeefedfb",
   "logins": 0,
   "lastLogin": 0,
   "roles": [
    {
     "id": "1",
     "name": "user",
     "loaded": true
    }
   ],
   "fullName": "Test User",
   "admin": false,
   "lastLoginDat": "1969-12-31T21:00:00.000-03:00",
   "loaded": true
  },
  {
   "id": "6",
   "firstName": "Test",
   "lastName": "User 2",
   "email": "test2@test.com",
   "password": "c5bc2a33ddffcfb3d61779ab44d7d933e1336b02",
   "logins": 0,
   "lastLogin": 0,
   "fullName": "Test User 2",
   "admin": false,
   "lastLoginDat": "1969-12-31T21:00:00.000-03:00",
   "loaded": true
  }
 ]
}

这是它在 服务器 浏览器上返回的内容:

{  
    "kind": "myapp#usersItem",  
    "etag": "\"l4AE0sdQvyB-SkumpjWQFJVUZzo/MSGC-asdfasdf\"" 
}

一些见解:

  • 我可以(通过 MySQL Workbench)访问本地 SQL 实例和 Google Cloud SQL 外部实例。
  • 本地和外部 SQL 实例彼此相等。
  • 我还保证可以访问我用来访问数据库的项目(通过 Google Cloud 面板)。

我真的不知道该怎么做或检查。我搜索了类似的东西,但找不到任何相关的东西。

感谢任何想法。

【问题讨论】:

  • 您能否包含一个代码 sn-p,说明您正在执行的返回该操作的操作以及您期望从 API 返回的操作。
  • @JanVladimirMostert 完成,希望对您有所帮助。否则让我知道。谢谢。
  • AppEngine 本地和生产环境是两个完全不同的环境,因此在本地它可能会做一件事,而一旦您部署,您可以期望它做一些不同的事情。 Etag 是返回的哈希,据我所知,它是返回数据的 MD5。我看到的结果好像生产数据库中没有数据。

标签: google-app-engine google-cloud-sql


【解决方案1】:

正如 Jan 所指出的,GAE 本地和生产是两个独立的故事。但我会给你一些比这个特定解决方案更好的东西,它是解决这个问题和其他问题的工具:

1. 转到 Console > Compute > App Engine > Versions,并确保您上传的后端版本是正确的(查看时间已上传)并且被选中或默认

2. 创建一个 API 测试方法,它对 DB 执行相当基本的操作,但不调用其他方法,也不使用 try/catch 块。你试图在这里提出一个例外,如果有的话。您需要访问数据库并返回数据的所有代码都应该在该方法中。

3. 转到资源管理器面板,然后执行您的测试方法。如果它有效,那么您的问题不在于连接,而在于逻辑。使用与(2)相同的方法来测试逻辑。

4. 如果该方法不起作用,请转到:控制台 > 监控 > 日志。在那里您会找到异常跟踪

【讨论】:

  • 能够找到这个问题。谢谢!
最近更新 更多