Yog*_*ngh 4 google-app-engine google-cloud-sql google-cloud-platform laravel-5
我正在尝试将 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}"
Run Code Online (Sandbox Code Playgroud)
我正在使用这个 cloud_sql_proxy 命令:
~/Downloads/cloud_sql_proxy -instances=/cloudsql/[INSTANCE_ID]=tcp:3306
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,
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
Run Code Online (Sandbox Code Playgroud)
我还为我的项目启用了Google Cloud SQL和Cloud SQL Admin API。
我收到的错误是:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from `campaigns`)
Run Code Online (Sandbox Code Playgroud)
以下是我在努力寻找解决方案时的观察。
在我看到的 Stackdriver 日志记录错误是
严重性:“错误”textPayload:“2018-07-18T05:57:08.204597Z 859643 [注意]已中止与数据库的连接859643:'[DB_NAME]'用户:'[DB_USER]'主机:'cloudsqlproxy〜173.194.90.33'(读取通信数据包时出错)”
当我检查时~/Downloads/cloud_sql_proxy info:
2018/07/18 14:10:50 使用 gcloud 的活动项目:[项目 ID] 2018/07/18 14:10:55必须设置 -dir:对 [实例名称] 使用 unix 套接字
我实际上无法确定这是否与错误有关。
提前致谢。
连接到 Cloud SQL 有两种方法:通过 TCP 或通过 Unix Socket。
如果您使用的是 Unix 套接字,则需要指定-dir /cloudsql(或类似)作为在其中创建套接字的目录。完整命令如下所示:
./cloud_sql_proxy -dir=/cloudsql -instances=myProject:uscentral1:myInstance
Run Code Online (Sandbox Code Playgroud)
然后您将使用DB_SOCKET=/cloudsql/myProject:uscentral1:myInstance它进行连接。(您不需要主机或端口 - 您通过 unix 套接字进行连接)
如果您使用 TCP,则应用要侦听实例名称的端口。所以命令看起来像这样:
./cloud_sql_proxy -instances=myProject:us-central1:myInstance=tcp:3306
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您使用DB_HOST=127.0.0.1and DB_PORT=3306(但不使用DB_SOCKET)。
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |