我使用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具有编辑角色! 任何人都可以帮我解决问题所在吗?
答案 0 :(得分:0)
ALRIGHT!我解决了这个问题。我跟着the Google cloud's documentation但是我遇到了问题。我添加了一个简单的' /'在:
cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME)
而不是'/cloudsql'
应该是'/cloudsql/'
我知道这很奇怪,因为os.path.join
必须添加' /'走上这条道路,但由于我不知道的奇怪原因,它并没有这样做。