无法将App Engine上的Laravel应用程序连接到Cloud SQL数据库

时间:2019-08-30 14:32:30

标签: php mysql laravel google-app-engine google-cloud-sql

我有一个运行在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'),
            ]) : [],
        ],

很显然,我希望此连接成功。让我知道是否需要更多代码部分。

预先感谢

1 个答案:

答案 0 :(得分:2)

请更改此行:

cloud_sql_instances: "projectname:region:instancename"

进入此行:

cloud_sql_instances:projectname:region:instancename

如果这不起作用,请检查this link并激活您的API(如果尚未这样做)。

此外,如果启用API仍无法解决问题,请还原cloud_sql_instances变量,使值带有双引号。