连接到Google云端SQL时出现内部错误

时间:2017-07-19 19:16:54

标签: python google-app-engine flask google-cloud-sql cloud-sql-proxy

我使用Flask设计了一个简单的网站,我的目标是将其部署在Google App引擎上。我开始在本地工作,并使用谷歌云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中定义了我的全局变量,安装了flask,mysqldb以及启动我的应用程序所需的一切。我还在该计算引擎上使用了cloud_sql_proxy,并尝试使用此语法连接到GC SQL实例:

db = MySQLdb.connect(CLOUDSQL_SERVER,CLOUDSQL_USER,CLOUDSQL_PASSWORD,CLOUDSQL_DATABASE,CLOUDSQL_PORT)

但它有同样的问题。我不认为这是权限问题,因为我在GC SQL的授权网络部分和I AM& amp;中定义了我的计算引擎的IP地址。 ADMIN部分,myprojectname @ appspot.gserviceaccount.com具有编辑角色! 任何人都可以帮我解决问题所在吗?

1 个答案:

答案 0 :(得分:0)

ALRIGHT!我解决了这个问题。我跟着the Google cloud's documentation但是我遇到了问题。我添加了一个简单的' /'在:

cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME)

而不是'/cloudsql'应该是'/cloudsql/'

我知道这很奇怪,因为os.path.join必须添加' /'走上这条道路,但由于我不知道的奇怪原因,它并没有这样做。