【问题标题】:Why cant Eloquent in my App Engine app connect to my Google SQL instance?为什么我的 App Engine 应用中的 Eloquent 无法连接到我的 Google SQL 实例?
【发布时间】:2018-09-07 02:23:07
【问题描述】:

奇怪的是,我可以从 PHPStorm 的数据库工具连接到我的 Google SQL 实例,只是在部署时似乎无法在本地连接。

当我在本地开发时 - 我的应用程序可以使用下面的环境变量很好地连接到我的本地堆栈实例 (docker)。

这是我的app.yaml

runtime: php72
api_version: 1

handlers:
- url: /.*
  script: public/index.php

env_variables:
  MYSQL_DSN: "mysql:unix_socket=/cloudsql/project:location:sql-instance;dbname=databaseName"
  MYSQL_USER: "username"
  MYSQL_PASSWORD: "password"

runtime_config:
  enable_stackdriver_integration: true

这就是我在 Eloquent / Illuminate 中初始化它的方式。

    use Illuminate\Database\Capsule\Manager;

    $db = [];
    if(getenv("MYSQL_DSN")){
        $db = [
            'driver' => 'mysql',
            'dsn' => getenv("MYSQL_DSN"),
            'username' => getenv("MYSQL_USER"),
            'password' => getenv("MYSQL_PASSWORD"),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ];
    } else if(getenv("MYSQL_HOST")){
        $db = [
            'driver' => 'mysql',
            'host' => getenv("MYSQL_HOST"),
            'database' => getenv("MYSQL_DATABASE"),
            'username' => getenv("MYSQL_USER"),
            'password' => getenv("MYSQL_PASSWORD"),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ];
    }

    $settings = [
            // Slim Settings
            'determineRouteBeforeAppMiddleware' => false,
            'displayErrorDetails' => true,
            'db' => $db
        ];

    $container = $this->getContainer();
    $capsule = new Manager;
    $capsule->addConnection($settings['db']);

    $capsule->setAsGlobal();
    $capsule->bootEloquent();

【问题讨论】:

    标签: php google-app-engine eloquent slim google-cloud-sql


    【解决方案1】:

    您的 Cloud SQL 实例是否允许来自您正在测试的地方的连接?在您的SQL instance page in the GCP Console 上的授权选项卡下检查授权网络。

    如果不确定,您可以尝试添加0.0.0.0/0 以测试是否允许所有 IPv4 连接。稍后关闭以防止未经授权的直接数据库连接。

    【讨论】:

    • 感谢您的意见!不是那个 - 原来是我使用的 DSN。当我专门设置 unix_port 和数据库时,它起作用了。
    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 2023-03-25
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多