我有一个运行在Google App Engine上的Laravel应用程序,我想将其连接到我拥有的Google Cloud SQL数据库。我尝试了许多解决方案,但都没有解决问题。每次向数据库发出请求时,都会引发
SQLSTATE [HY000] [2002]没有这样的文件或目录(SQL:从sessions
中选择*,其中id
= CQZwtQFAm5RCYcP4ZSqf5mtxTnebGUigQQKVluJa限制1)。
我确实有会话表,尝试登录时也遇到了错误,但是使用了用户表。
我正在尝试更改所有环境变量,编辑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'),
]) : [],
],
很显然,我希望此连接成功。让我知道是否需要更多代码部分。
预先感谢
答案 0 :(得分:2)
请更改此行:
cloud_sql_instances: "projectname:region:instancename"
进入此行:
cloud_sql_instances:projectname:region:instancename
如果这不起作用,请检查this link并激活您的API(如果尚未这样做)。
此外,如果启用API仍无法解决问题,请还原cloud_sql_instances
变量,使值带有双引号。