当前位置: 首页 > 知识库问答 >
问题:

应用引擎无法连接到gcloud sql数据库

况明贤
2023-03-14

我一直在使用带有gcloud的Laravel来创建网站(App Engine)和数据库(SQL),但由于某种原因,我无法让App Engine连接到数据库。

我收到的错误是,laravel自己调试的“SQLSTATE[HY000][2002]没有这样的文件或目录(SQL:从用户中选择*)”,“加载资源失败:服务器在浏览器检查窗口中以500()的状态响应。”。

如果我运行本地实例,它可以正常工作,因为我允许我的IP访问SQL数据库。我还可以使用MySQL工作台查看数据。

我使用了以下教程。标准环境也有一个,但我甚至没有在这方面走得这么远。使用Laravel 5.5效果更好。

我尝试过的其他事情包括将App Engine连接起来,就像它是一个与数据库不在同一个项目中的外部应用程序一样。https://cloud.google.com/sql/docs/mysql/connect-app-engine还包括为服务帐户授予角色:https://cloud.google.com/iam/docs/granting-roles-to-service-accounts

我还做了以下步骤:

>

  • 应用程序。yaml如下所示
env: flex

runtime_config:
  document_root: public

# Ensure we skip ".env", which is only for local development
skip_files:
  - .env

env_variables:
  # Put production environment variables here.
  APP_LOG: errorlog
  APP_KEY: app-key
   ## Set these environment variables according to your CloudSQL configuration.

  DB_CONNECTION: mysql
  DB_HOST: sql-ip
  DB_PORT: 3306
  DB_DATABASE: database-name
  DB_USERNAME: db-username
  DB_PASSWORD: pass
  DB_SOCKET: /cloudsql/instance-connection:name
  beta_settings: 
  cloud_sql_instances: instance-connection:name```
  • 我还在composer.json中使用以下内容来允许访问文件和缓存配置。755工作类似,应该是最终的。
    "chmod -R 777 bootstrap\/cache",
    "chmod -R 777 storage",
    "php artisan config:cache"
]

还值得注意的是,引导配置文件存在错误,使其指向我计算机上的本地文件,而不是上传的文件。

如果您需要更多信息,请询问。

谢谢

共有2个答案

包兴思
2023-03-14

多亏塞缪尔·罗梅罗(SamuelRomero)的评论,我才得以工作。我遵循了以下“教程”:https://cloud.google.com/appengine/docs/flexible/python/using-cloud-sql制作我的应用程序。yaml文件如下所示

runtime: php
env: flex

runtime_config:
  document_root: public

# Ensure we skip ".env", which is only for local development
skip_files:
  - .env

env_variables:
  SQLALCHEMY_DATABASE_URI: >-
    mysql+pymysql://USERNAME:PASSWORD@/DATABASE?unix_socket=/INSTANCE_CONNECTION_NAME
  # Put production environment variables here.
  APP_LOG: errorlog
  APP_KEY: APPKEY
  ## Set these environment variables according to your CloudSQL configuration.

  DB_CONNECTION: mysql
  DB_HOST: localhost;unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME
  DB_DATABASE: DATABASE
  DB_USERNAME: USERNAME
  DB_PASSWORD: PASSWORD
beta_settings:
  cloud_sql_instances: INSTANCE_CONNECTION_NAME

除了启用云SQL API之外,我本应该启用它,但可能由于某种原因被禁用了。然后,我还在云SDK中运行了“gcloud auth application default login”。

希望这将帮助某人,如果有安全问题,请告诉我。

汝和裕
2023-03-14

为了让gcloud sql数据库与App Engine实例连接,数据库的环境变量应该如下所示:

  DB_CONNECTION: mysql
  DB_HOST: localhost;unix_socket=/cloudsql/instance-connection:name
  DB_DATABASE: database-name
  DB_USERNAME: db-username
  DB_PASSWORD: pass

请注意,不要使用DB_PORT和使用插座DB_HOST。

 类似资料:
  • 我们将app engine与CloudSQL结合使用,有时会出现以下异常。只有当我们从Java执行本机查询时才会发生这种情况(当我们使用JPA时不会发生这种情况)。知道怎么摆脱它吗? 异常[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:com。谷歌。云sql。jdb

  • 我正在appengine虚拟机上开发一个Flask应用程序。我想上传文件到谷歌云存储,所以我使用连接到云存储。仅在VM中测试时,我的应用程序运行正常,没有错误。但是,在我使用部署并在部署的应用程序上测试上载功能后,它失败并返回错误。日志显示了回溯,这是由于连接到云存储的代码行: 具体错误是

  • 我觉得我在这里兜圈子,所以,请,忍忍。我想将我的Spring Boot应用程序部署到App Engine,但与Google提供的简单示例不同,我的应用程序需要数据库,这意味着凭据。我正在谷歌应用引擎上运行标准的Java11。 通过在中包含以下内容,我成功地连接了应用程序: 问题是我不想向存储库提交任何凭据,因此,这是不可接受的。我可以使用一个环境变量,但是我必须在文件中定义它们。我要么保留部署所需

  • 我已经在一个实例中安装了opsmanager数据库,并在其他实例中安装了应用程序 > 在应用程序数据库服务器中,i时显示127.0.0.1:27017运行mongod 当我用sudo服务mongodb-mms启动时,会出现以下错误 uri=mongoDb://db_instance_publicip:27017/?maxpoolsize=150}错误:在等待连接时超时30000 ms后.....

  • 如何配置日志记录? 如何池数据库连接?我的关系合并了吗? 如何将自定义连接参数传递到数据库API? “MySQL服务器已经消失” “命令不同步;现在不能运行此命令”/“此结果对象不返回行。它已自动关闭” 如何自动“重试”语句执行? 使用DBAPI Autocommit允许透明重新连接的只读版本 为什么SQLAlchemy会发布这么多回滚? 我在Myisam上-我怎么关掉它? 我在SQL Serve

  • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?