【问题标题】:Connect to google cloud sql from local development server从本地开发服务器连接到谷歌云 sql
【发布时间】:2015-06-02 15:30:41
【问题描述】:

我刚开始使用 google appengine。我正在用 php 开发一个应用程序。如果我想查看结果,我使用了

dev_appserver.py ./ --php_executable_path /usr/bin/php5-cgi

(没有 --php_executable_path 参数对我来说不起作用)
它工作正常,除了我无法连接到云 sql 实例。我读了这个https://cloud.google.com/appengine/docs/php/cloud-sql 并尝试通过以下方式连接到云sql:

$sql = 新 mysqli(null, 'root', // 用户名 '', // 密码 , 空值, '/cloudsql/:' );

如果我将某些东西部署到 appengine,这是可行的,但是如果我需要在本地调试应用程序并且它依赖于数据库,我该怎么办?

【问题讨论】:

    标签: google-app-engine google-cloud-sql


    【解决方案1】:

    @DTing 的回答是正确的,Google 的文档鼓励您使用本地开发服务器中的本地 MySQL 并推荐该模式。

    但是,如果您不同意并希望针对云中的“生产”SQL 运行开发服务器,这也是受支持的(只是不鼓励,因为开发过程中的错误可能会破坏您的生产数据!)。

    具体而言,您遵循https://cloud.google.com/sql/docs/getting-started#work 处的一般说明并由https://cloud.google.com/sql/docs/getting-started#work 指出(忽略特定于appengine 的部分):确保您的Cloud SQL 实例具有IP 地址,启用outside-visible 工作站的 IP 地址,确保 SQL 实例有 root 密码——然后检查一切是否在命令行 MySQL 客户端上运行,例如

    [[注意:要验证您工作站的outside-visible IP 地址,请使用浏览器访问诸如http://checkmyip.com/ 之类的站点]]

    $ mysql --host=INSTANCE_IP --user=root --password
    

    一切设置妥当后,您只需按照https://cloud.google.com/appengine/docs/php/cloud-sql/#PHP_Using_a_local_MySQL_instance_during_development 的说明进行操作即可:

    要从您的开发环境连接到 Cloud SQL 实例, 将“127.0.0.1”替换为实例 IP 地址。你不使用 用于连接到 Cloud SQL 的基于“/cloudsql/”的连接字符串 如果您的 App Engine 应用在 Development 中本地运行,则为实例 服务器。

    如果您想在本地使用和部署相同的代码,您可以使用 特殊的 $_SERVER 键变量 (SERVER_SOFTWARE) 来确定在哪里 您的代码正在运行。这种方法如下所示。

    例如,如果您的 Cloud SQL 的 IP 地址是 12.34.56.78,您可以使用

    $sql = new mysqli('12.34.56.78:3306',
      '<username>',
      '<password>',
      <database-name>
      );
    

    $_SERVER['SERVER_SOFTWARE'] 未设置或不包含Google App Engine 时(这意味着您正在本地开发服务器上运行)。

    【讨论】:

    • 很好的答案并写下来,谢谢。我可能会针对开发/暂存云 sql 实例数据库而不是实际的生产数据库运行它。
    【解决方案2】:

    https://cloud.google.com/appengine/docs/php/cloud-sql/#PHP_Using_a_local_MySQL_instance_during_development

    The Guestbook example 上面显示了当代码在 App Engine 中运行时,您的应用程序如何连接到 Cloud SQL 实例,并在代码在 Development Server 中运行时连接到本地 MySQL 服务器。我们鼓励这种模式,以尽量减少混乱并最大限度地提高灵活性。

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 2016-07-13
      • 2021-03-14
      • 2013-08-16
      • 2018-08-16
      • 2020-04-13
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多