我有一个在Google App Engine上运行的Laravel应用程序,我想将其连接到我拥有的Google Cloud SQL数据库。我尝试了许多解决方案,但没有一个可以解决问题。每次它向数据库发出请求时,它都会抛出
SQLSTATE[HY000] [2002] 没有这样的文件或目录(SQL:从sessions
中选择 *,其中id
= CQZwtQFAm5RCYcP4ZSqf5mtxTnebGUigQQKVluJa limit 1(。
我确实有会话表,并且在尝试登录时也收到此错误,但随后使用用户表。
我尝试更改所有环境变量,编辑配置/数据库.php文件,...
这是我的应用程序.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"
以下是配置/数据库的一部分.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
如果这不起作用,请检查此链接并激活您的 API(如果您尚未这样做(。
此外,如果启用 API 无法解决问题,请将cloud_sql_instances
变量恢复为值上的双引号。