我使用 Flask 设计了一个简单的网站,我的目标是将它部署在 Google App 引擎上。我开始在本地处理它并使用 google cloud sql 作为数据库。我使用 google_cloud_proxy 打开端口 3306 以与我的 GC SQL 实例交互,它在本地运行良好......这就是我将应用程序连接到 GC SQL 的方式:
我有一个 app.yaml 文件,我在其中定义了我的全局变量:
env_variables:
CLOUDSQL_SERVER = '127.0.0.1'
CLOUDSQL_CONNECTION_NAME = "myProjectName:us-central1:project"`
CLOUDSQL_USER = "user"
CLOUDSQL_PASSWORD = "myPassword"
CLOUDSQL_PORT = 3306
CLOUDSQL_DATABASE = "database"
从我的本地机器上我做:
db = MySQLdb.connect(CLOUDSQL_SERVER,CLOUDSQL_USER,CLOUDSQL_PASSWORD,CLOUDSQL_DATABASE,CLOUDSQL_PORT)
如果我想在 App Engine 上建立连接,我会这样做:
cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME)
db = MySQLdb.connect(unix_socket=cloudsql_unix_socket,user=CLOUDSQL_USER,passwd=CLOUDSQL_PASSWORD,db=CLOUDSQL_DATABASE)
网站的静态部分正在运行,但例如,当我想使用存储在 GC SQL 中的用户名和密码登录时,我收到一个内部错误。
我尝试了另一种方法……我启动了一个计算引擎,在 config.py 中定义了我的全局变量,安装了烧瓶、mysqldb 以及启动我的应用程序所需的一切。我还在该计算引擎上使用了 cloud_sql_proxy,并尝试使用以下语法连接到 GC SQL 实例:
db = MySQLdb.connect(CLOUDSQL_SERVER,CLOUDSQL_USER,CLOUDSQL_PASSWORD,CLOUDSQL_DATABASE,CLOUDSQL_PORT)
但它有同样的问题。我不认为这是权限问题,因为我在 GC SQL 的授权网络部分和 I AM & ADMIN 部分定义了我的计算引擎的 IP 地址,myprojectname@appspot.gserviceaccount.com 具有编辑角色!谁能帮我找出问题所在?