首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >云运行-连接到云sql时出错

云运行-连接到云sql时出错
EN

Stack Overflow用户
提问于 2021-12-21 20:34:06
回答 1查看 514关注 0票数 0

我正在尝试从云运行连接到云sql。然而,我得到了错误,不确定需要做什么。

代码语言:javascript
运行
复制
def create_database_connection(db_user, db_pass, db_name, instance_connection_name):

    db_socket_dir = os.environ.get("DB_SOCKET_DIR", "/cloudsql")
     pool = sqlalchemy.create_engine(
 
        sqlalchemy.engine.url.URL.create(
            drivername="mysql+pymysql",
            username=db_user,  # e.g. "my-database-user"
            password=db_pass,  # e.g. "my-database-password"
            database=db_name,  # e.g. "my-database-name"
            query={
                "unix_socket": "{}/{}".format(
                    db_socket_dir,  # e.g. "/cloudsql"
                    instance_connection_name)  # i.e "<PROJECT-NAME>:<INSTANCE-REGION>:<INSTANCE-NAME>"
            }
        ),
    )

    return pool


@app.route('/test', methods=['GET'])
def handle_test():
    connection = database.create_database_connection(db_user=os.getenv("db_user"), 
                                                     db_pass=os.getenv("db_pass"),
                                                     db_name=os.getenv("db_name"),
                                                     instance_connection_name=os.getenv("instance_connection_name"))

    Session = sessionmaker(bind=connection)
    session = Session()
    records = session.query(Demo).all()
    records_list = [record.__dict__ for record in records]
    for record in records_list:
        del record["_sa_instance_state"]

    print(records_list)
    json_string = json.dumps(records_list)
    return json_string

误差

代码语言:javascript
运行
复制
Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/pymysql/connections.py", line 602, in connect sock.connect(self.unix_socket) FileNotFoundError: [Errno 2] No such file or directory

in connect raise exc sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) 
(2003, "Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)")

我使用gcloud运行直接从源代码部署应用程序。因此,google云构建正在构建和部署图像。

我也尝试创建文件夹,但是在docker文件中仍然有相同的错误。

Dockerfile

代码语言:javascript
运行
复制
FROM python:3.10-slim

ENV PYTHONUNBUFFERED True

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

RUN mkdir -p /cloudsql

RUN pip install --no-cache-dir -r requirements.txt

CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

更新:

  • 我可以看到文件夹/cloudsql正在创建,
  • I将DB_SOCKER_DIR更改为/tmp,仍然是相同的问题。

通过cloud function连接到相同代码的数据库没有问题。我只在使用cloud run时出错

我使用以下命令对deploy cloud run

代码语言:javascript
运行
复制
gcloud run deploy processcontrol --source .  --set-cloudsql-instances=cloud-sql-8

我已经为我试图访问的SQL设置了连接。

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 16:53:14

您是否在云运行实例中启用了Cloud代理?关于在这里设置这些信息的更多信息:

https://cloud.google.com/sql/docs/mysql/connect-run

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70441322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档