【问题标题】:internal error when connecting to google cloud SQL连接到谷歌云 SQL 时出现内部错误
【发布时间】:2017-07-19 19:16:54
【问题描述】:

我使用 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 具有编辑角色! 谁能帮我看看问题出在哪里?

【问题讨论】:

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


    【解决方案1】:

    好的!我解决了这个问题。我关注了the Google cloud's documentation,但遇到了问题。我在以下位置添加了一个简单的“/”:

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

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

    我知道这很奇怪,因为 os.path.join 必须在路径中添加“/”,但由于我不知道的奇怪原因,它没有这样做。

    【讨论】:

    • 编辑:实际上,我无法重现该问题:看来os.path.join 为您正确添加了“/”:>>> os.path.join('/cloudsql', ' bananana:asdf:asdf') '/cloudsql/bananana:asdf:asdf' 您确定添加“/”是解决问题的唯一方法吗?
    • 我几天都在想同样的事情,我认为我的问题不在于那部分,因为os.path.join 在末尾添加了“/”。但后来我在 github 上看到了一个项目,他们使用了 '/cloudsql/{}'.format(connection_name)。然后我想也许 os.path.join 没有在路径中添加“/”。我添加了'/'并解决了问题!我知道这有点奇怪。
    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 2021-10-27
    • 2021-04-24
    • 2021-11-08
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多