我正在开发一个在Google应用引擎上运行的应用程序。通常情况下,如果使用Google Cloud SQL,我必须启用结算/付款。所以首先,我决定远程连接到另一台服务器上的mysql数据库。它完全脱机工作,但在部署我的应用程序后,它无法正常工作。显然,GAE不支持远程连接...还有另一种方法可以解决这个问题吗?隧道?
注意:使用HTTP API从我的数据库中返回信息......需要更多的编程工作。
答案 0 :(得分:7)
在1.8.8中,我们可以使用PHP的远程套接字。
您需要确保您的应用程序已启用计费,以便远程套接字可用。完成后,您应该能够从应用引擎应用程序连接到远程MySQL数据库。
答案 1 :(得分:2)
不幸的是,App Engine不支持外部呼叫:
App Engine应用程序不能:
写入文件系统。 PHP应用程序可以使用Google云端存储 用于存储持久文件。允许从文件系统读取, 以及随应用程序上传的所有应用程序文件都可用。
直接打开套接字或访问其他主机。应用程序可以使用 App Engine URL提取服务以发出HTTP和HTTPS请求 端口80和443上的其他主机。
慢慢回应。必须在其中处理对应用程序的Web请求 几秒钟。需要很长时间才能做出响应的流程 终止以避免Web服务器过载。
进行其他类型的系统调用。
答案 2 :(得分:0)
Stuart Langley所说的也适用于Python。
您必须启用帐单才能使用远程套接字。但是从我的实验来看,App Engine运行时附带的MySQLdb似乎无法使用外部MySQL数据库。
您可以使用Oracle提供的纯python库mysql-connector-python。但是要注意,延迟很高(如果每个请求打开一个新连接,总延迟可能是5秒加)。也许是因为远程套接字不是本机实现,而是钩子下的代理或服务。
答案 3 :(得分:0)
我有一个外部MySQL数据库,我正在从Google App Engine连接。我写过这个教程。我希望这能帮助你和其他人。 of this question
答案 4 :(得分:0)
这对我来说也是同样的问题,但不幸的是我做到了。
这是我的app.yaml
runtime: php72
env_variables:
LOG_CHANNEL: stackdriver
## Put production environment variables here.
APP_KEY: YOUR_APP_KEY
APP_STORAGE: /tmp
VIEW_COMPILED_PATH: /tmp
SESSION_DRIVER: cookie
## Set these environment variables according to your CloudSQL configuration.
DB_DATABASE: YOUR_DB_NAME
DB_USERNAME: YOUR_DB_USERNAME
DB_PASSWORD: YOUR_DB_PASSWORD
DB_CONNECTION: mysql
DB_HOST: YOUR_DB_PUBLIC_AP_ADDRESS
DB_PORT: 3306
如果您在cPanel
中使用远程 mysql ,请不要忘记在cPanel
菜单中添加访问主机,并填写主机(允许使用%通配符)使用:%.%.%.%
并添加。
然后您可以解决此问题……