google-app-engine - 在本地连接云实例以作为服务运行的 laravel 项目

标签 google-app-engine laravel-5 google-cloud-platform google-cloud-sql

我正在尝试将 Laravel 连接到本地的 Google mysql 实例。

.env 文件

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:GptV9AIxUX7TuPkKxbLs54DLjivt2wCmuG37qsnqxJU=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=**********
DB_USERNAME=**********
DB_PASSWORD=**********
DB_SOCKET=/cloudsql/[INSTANCE NAME]
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

我正在使用这个 cloud_sql_proxy 命令:

~/Downloads/cloud_sql_proxy -instances=/cloudsql/[INSTANCE_ID]=tcp:3306

它工作正常,

2018/07/18 13:46:29 Listening on 127.0.0.1:3306 for /cloudsql/[INSTANCE ID]
2018/07/18 13:46:29 Ready for new connections

我还为我的项目启用了 Google Cloud SQLCloud SQL Admin API

我收到的错误是:

SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from `campaigns`)

以下是我在努力寻找解决方案时的观察。

  1. 我在 Stackdriver 日志记录中看到的错误是

    严重性:“错误” textPayload: "2018-07-18T05:57:08.204597Z 859643 [Note] Aborted connection 859643 to db: '[DB_NAME]' user: '[DB_USER]' host: 'cloudsqlproxy~173.194.90.33' (读取通信时出错数据包)”

  2. 当我检查 ~/Downloads/cloud_sql_proxy 信息时:

    2018/07/18 14:10:50 使用 gcloud 的事件项目:[PROJECT ID] 2018/07/18 14:10:55 必须设置 -dir:为 [INSTANCE NAME] 使用 unix 套接字

如果这与错误有关,我实际上无法理解。

  1. 我已尝试使用服务帐户连接云 sql,它连接正常但仍无法解决此问题。

提前致谢。

最佳答案

有两种连接到 Cloud SQL 的方法:通过 TCP 或通过 Unix 套接字。

如果您使用的是 Unix 套接字,则需要指定 -dir/cloudsql(或类似的)作为创建套接字的目录。完整命令如下所示:

./cloud_sql_proxy -dir=/cloudsql -instances=myProject:uscentral1:myInstance

然后您将使用 DB_SOCKET=/cloudsql/myProject:uscentral1:myInstance 进行连接。 (您不需要主机或端口 - 您通过 unix 套接字连接)

如果您使用的是 TCP,则应用您要监听实例名称的端口。所以命令看起来像这样:

./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306

在这种情况下,您使用 DB_HOST=127.0.0.1DB_PORT=3306(但不是 DB_SOCKET)。

关于google-app-engine - 在本地连接云实例以作为服务运行的 laravel 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397544/

相关文章:

php - Laravel:从另一个位置调用 Controller 方法

php - 在php中对上传文件的哈希内容

javascript - 如何在谷歌云功能中使用谷歌表格 API

python - 使用 db.ReferenceProperty 引用 Google App Engine 中的其他表

firebase - App Engine 和 Firebase 托管在一个域中

javascript - Blade 内部的 Vue - 语法

postgresql - 从具有私有(private) IP 和公共(public) IP 的 VM 连接到私有(private) IP 上的 Google Cloud SQL 实例失败

python - 导入错误 : No module named 'setup'

java - 如何使用 Google App Engine Java 平台开发 Web ui

python - 运行我的谷歌凭据以更新谷歌表格中的某些数据时出现异常错误