Google App Engine - 部署不工作
Google App Engine - Deployment not working
我有一个 Google App Engine 项目(一个 API)针对 Google Cloud SQL实例。 API 和 SQL 实例,运行 local.
当我在开发(本地)上执行项目时,我可以探索 API 就好了。然而,当我继续部署时,所有调用 return 都是空的。
这是 API 代码 (Java):
@ApiMethod(
name = "test.users.list",
path = "test/users/list",
httpMethod = "get"
)
public UserList testUserList ()
{
UserList users = UserList.getAll();
return users;
}
这就是它 returns local:
{
"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
}
]
}
这是return在服务器浏览器上的内容:
{
"kind": "myapp#usersItem",
"etag": "\"l4AE0sdQvyB-SkumpjWQFJVUZzo/MSGC-asdfasdf\""
}
一些见解:
- 我可以(通过 MySQL Workbench)访问本地 SQL 实例和 Google 云 SQL 外部实例。
- 本地和外部 SQL 实例彼此相等。
- 我还保证可以访问我用来访问数据库的项目(通过 Google 云面板)。
我真的不知道该做什么或检查什么。我搜索过类似的东西,但找不到任何相关的东西。
如有任何想法,我们将不胜感激。
正如 Jan 指出的那样,GAE 本地和生产是两个独立的故事。但我会给你一些比这个特定解决方案更好的东西,它是解决这个问题和其他问题的工具:
1. 转到控制台 > 计算 > App Engine > 版本,并确保您上传的后端版本是正确的 (看一下上传时间)是选中还是默认.
2. 创建一个 API 测试方法 对数据库执行相当基本的操作,但不调用其他方法,也不使用 try/catch 块。您正试图在此处引发异常(如果有的话)。访问数据库所需的所有代码和 return 数据都应该在该方法中。
3. 转到资源管理器面板,并执行您的测试方法。如果有效,那么你的问题不在连接上,而在逻辑上。使用与(2)相同的方法来测试逻辑。
4. 如果该方法不起作用,请转至:控制台 > 监控 > 日志。在那里你会找到 exception trace.
我有一个 Google App Engine 项目(一个 API)针对 Google Cloud SQL实例。 API 和 SQL 实例,运行 local.
当我在开发(本地)上执行项目时,我可以探索 API 就好了。然而,当我继续部署时,所有调用 return 都是空的。
这是 API 代码 (Java):
@ApiMethod(
name = "test.users.list",
path = "test/users/list",
httpMethod = "get"
)
public UserList testUserList ()
{
UserList users = UserList.getAll();
return users;
}
这就是它 returns local:
{
"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
}
]
}
这是return在服务器浏览器上的内容:
{
"kind": "myapp#usersItem",
"etag": "\"l4AE0sdQvyB-SkumpjWQFJVUZzo/MSGC-asdfasdf\""
}
一些见解:
- 我可以(通过 MySQL Workbench)访问本地 SQL 实例和 Google 云 SQL 外部实例。
- 本地和外部 SQL 实例彼此相等。
- 我还保证可以访问我用来访问数据库的项目(通过 Google 云面板)。
我真的不知道该做什么或检查什么。我搜索过类似的东西,但找不到任何相关的东西。
如有任何想法,我们将不胜感激。
正如 Jan 指出的那样,GAE 本地和生产是两个独立的故事。但我会给你一些比这个特定解决方案更好的东西,它是解决这个问题和其他问题的工具:
1. 转到控制台 > 计算 > App Engine > 版本,并确保您上传的后端版本是正确的 (看一下上传时间)是选中还是默认.
2. 创建一个 API 测试方法 对数据库执行相当基本的操作,但不调用其他方法,也不使用 try/catch 块。您正试图在此处引发异常(如果有的话)。访问数据库所需的所有代码和 return 数据都应该在该方法中。
3. 转到资源管理器面板,并执行您的测试方法。如果有效,那么你的问题不在连接上,而在逻辑上。使用与(2)相同的方法来测试逻辑。
4. 如果该方法不起作用,请转至:控制台 > 监控 > 日志。在那里你会找到 exception trace.