无法将 App Engine 上的 Laravel 应用程序连接到云 SQL 数据库
Not able to connect Laravel application on App Engine to Cloud SQL database
我在 Google App Engine 上有一个 Laravel 应用程序 运行,我想将它连接到我拥有的 Google 云 SQL 数据库。我已经尝试了很多解决方案 none 解决了这个问题。每次它向数据库发出请求时,它都会抛出
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * 来自 sessions
,其中 id
= CQZwtQFAm5RCYcP4ZSqf5mtxTnebGUIgQQKVluJa 限制 1)。
我确实有会话 table,我在尝试登录时也遇到了这个错误,但当时是 table 用户。
我正在尝试更改所有环境变量,编辑 config/database.php 文件,...
这是我的 app.yaml:
runtime: php
env: flex
runtime_config:
document_root: public
env_variables:
APP_ENV: production
APP_DEBUG: true
APP_LOG: errorlog
APP_KEY: mykey
APP_TIMEZONE: "Europe/Brussels"
CACHE_DRIVER: database
SESSION_DRIVER: database
DB_HOST: localhost
DB_DATABASE: data
DB_USERNAME: root # tried custom user aswell
DB_PASSWORD: mypassword
DB_SOCKET: "/cloudsql/projectname:region:instancename"
beta_settings:
cloud_sql_instances: "projectname:region:instancename"
这是 config/database.php 的一部分(大部分未经编辑):
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'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'),
]) : [],
],
显然我希望这个连接成功。如果您需要更多代码部分,请告诉我。
提前致谢
请更改此行:
cloud_sql_instances: "projectname:region:instancename"
进入这一行:
cloud_sql_instances:projectname:region:instancename
如果这不起作用,请检查 this link 并激活您的 API(如果您尚未激活)。
此外,如果启用 API 没有解决问题,请将 cloud_sql_instances
变量恢复为在值上使用双引号。
我在 Google App Engine 上有一个 Laravel 应用程序 运行,我想将它连接到我拥有的 Google 云 SQL 数据库。我已经尝试了很多解决方案 none 解决了这个问题。每次它向数据库发出请求时,它都会抛出
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * 来自 sessions
,其中 id
= CQZwtQFAm5RCYcP4ZSqf5mtxTnebGUIgQQKVluJa 限制 1)。
我确实有会话 table,我在尝试登录时也遇到了这个错误,但当时是 table 用户。
我正在尝试更改所有环境变量,编辑 config/database.php 文件,...
这是我的 app.yaml:
runtime: php
env: flex
runtime_config:
document_root: public
env_variables:
APP_ENV: production
APP_DEBUG: true
APP_LOG: errorlog
APP_KEY: mykey
APP_TIMEZONE: "Europe/Brussels"
CACHE_DRIVER: database
SESSION_DRIVER: database
DB_HOST: localhost
DB_DATABASE: data
DB_USERNAME: root # tried custom user aswell
DB_PASSWORD: mypassword
DB_SOCKET: "/cloudsql/projectname:region:instancename"
beta_settings:
cloud_sql_instances: "projectname:region:instancename"
这是 config/database.php 的一部分(大部分未经编辑):
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'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'),
]) : [],
],
显然我希望这个连接成功。如果您需要更多代码部分,请告诉我。
提前致谢
请更改此行:
cloud_sql_instances: "projectname:region:instancename"
进入这一行:
cloud_sql_instances:projectname:region:instancename
如果这不起作用,请检查 this link 并激活您的 API(如果您尚未激活)。
此外,如果启用 API 没有解决问题,请将 cloud_sql_instances
变量恢复为在值上使用双引号。