如何从云 运行 上的 Laravel 项目 运行 连接到云 SQL?
How do I connect to Cloud SQL from a Laravel project running on Cloud Run?
对于概念验证项目,我正在尝试将我的 Laravel 项目 运行 连接到完全托管的 Cloud Run
上,并将 Cloud SQL
作为存储层。
我已经使用 gcloud app engine
命令通过 Google App Engine 获得了一个正常运行的服务(该服务可以连接到存储层)。我还通过服务的 cloud_sql_proxy
和本地 docker 容器成功连接了存储层。但我无法通过 Cloud 运行.
进行远程设置。
我正在按如下方式部署 docker 图像:
gcloud run deploy --image eu.gcr.io/demo/customerservice --add-cloudsql-instances demo:europe-west1:dps-demo --update-env-vars INSTANCE_CONNECTION_NAME="demo:europe-west1:dps-demo
我的服务 returns 请求的错误是:
could not find driver (SQL: select * from `cache` where `key` = laravel_cachefa9d927c88ff8ebffd06913d97f9d59e limit 1)
(任何类型的数据库查询都会发生此错误,如果我使用本地缓存,则类似)
这是我的 .env
文件(我删除了一些与问题无关的杂乱内容):
APP_NAME=Laravel
APP_ENV=local
APP_KEY=***
APP_DEBUG=true
APP_URL=http://CustomerService.test
APP_STORAGE=/tmp
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=***
DB_SOCKET=/cloudsql/demo:europe-west1:dps-demo
BROADCAST_DRIVER=log
CACHE_DRIVER=database
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
VIEW_COMPILED_PATH=/tmp
确保容器启用了相关的 php/mysql/pdo 模块。
您的数据库配置应与此类似:
'mysql' => [
'driver' => 'mysql',
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
观察 unix_socket
一个条目,即 /cloudsql/instance_name
并且没有主机,没有端口,因为您通过 unix 套接字连接。
对于概念验证项目,我正在尝试将我的 Laravel 项目 运行 连接到完全托管的 Cloud Run
上,并将 Cloud SQL
作为存储层。
我已经使用 gcloud app engine
命令通过 Google App Engine 获得了一个正常运行的服务(该服务可以连接到存储层)。我还通过服务的 cloud_sql_proxy
和本地 docker 容器成功连接了存储层。但我无法通过 Cloud 运行.
我正在按如下方式部署 docker 图像:
gcloud run deploy --image eu.gcr.io/demo/customerservice --add-cloudsql-instances demo:europe-west1:dps-demo --update-env-vars INSTANCE_CONNECTION_NAME="demo:europe-west1:dps-demo
我的服务 returns 请求的错误是:
could not find driver (SQL: select * from `cache` where `key` = laravel_cachefa9d927c88ff8ebffd06913d97f9d59e limit 1)
(任何类型的数据库查询都会发生此错误,如果我使用本地缓存,则类似)
这是我的 .env
文件(我删除了一些与问题无关的杂乱内容):
APP_NAME=Laravel
APP_ENV=local
APP_KEY=***
APP_DEBUG=true
APP_URL=http://CustomerService.test
APP_STORAGE=/tmp
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=***
DB_SOCKET=/cloudsql/demo:europe-west1:dps-demo
BROADCAST_DRIVER=log
CACHE_DRIVER=database
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
VIEW_COMPILED_PATH=/tmp
确保容器启用了相关的 php/mysql/pdo 模块。
您的数据库配置应与此类似:
'mysql' => [
'driver' => 'mysql',
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
观察 unix_socket
一个条目,即 /cloudsql/instance_name
并且没有主机,没有端口,因为您通过 unix 套接字连接。