【问题标题】:Trying to run Wordpress on Google App Engine with Google SQL Cloud尝试使用 Google SQL Cloud 在 Google App Engine 上运行 Wordpress
【发布时间】:2014-01-27 08:38:09
【问题描述】:

Warning: mysql_connect(): MySQL server has gone away in /base/data/home/apps/s~vidaaoblog/wp.372917300827551979/wordpress/wp-includes/wp-db.php on line 1147

Warning: mysql_connect(): Error while reading greeting packet. PID=-1 in /base/data/home/apps/s~vidaaoblog/wp.372917300827551979/wordpress/wp-includes/wp-db.php on line 1147

Warning: mysql_connect(): MySQL server has gone away in /base/data/home/apps/s~vidaaoblog/wp.372917300827551979/wordpress/wp-includes/wp-db.php on line 1147

一切都会出现这些错误。

WP_CONFIG:

define('DB_NAME', 'wordpress_db');

/** MySQL database username */
define('DB_USER', 'wp_user');

/** MySQL database password */
define('DB_PASSWORD', 'wp_password');

/** MySQL hostname */
if(isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false) {
  define('DB_HOST', ':/cloudsql/YOUR_PROJECT_ID:INSTANCT_ID');
}else{
  define('DB_HOST', '127.0.0.1');
}

按照以下说明操作:https://developers.google.com/appengine/articles/wordpress

谷歌云实例在单独的项目上运行,但允许应用访问

【问题讨论】:

  • 您确实更改了 YOUR_PROJECT_ID:INSTANCT_ID 对吗?
  • 我也有同样的问题。它在本地工作,但在部署时不起作用。我已仔细按照说明进行操作。 DB_HOST 是根据说明动态设置的。
  • APP_ENGINE_SDK_PATH/appcfg.py update APPLICATION_DIRECTORY 你试过运行第8步吗?
  • 我不确定这些是否会有所帮助,但快速的谷歌搜索让我找到了googlecloudplatform.github.io/…developers.google.com/appengine/articles/wordpress,如果还不知道可能会有一些帮助。

标签: php mysql wordpress google-app-engine


【解决方案1】:

如果您要将 WP 迁移到带有 Cloud SQL 的 GCE,您应该:

  1. 创建一个云存储桶并上传您的 mysqldump 文件(带有--hex-blob 条件)。
  2. 创建云SQL实例+创建root密码(默认无密码)。
  3. 将 *.sql(或 gzip)文件导入数据库。
  4. 创建一个 [WordPress] 用户,该用户有权访问该云 sql 实例中的该数据库。
  5. 通过静态 IP 或临时 IP [CIDR 格式] 预授权 GCE 实例访问 Cloud SQL 实例。
  6. 取决于您的 [WP] GCE 服务器风格(例如 debian),install mysql-client
  7. 创建 Cloud SQL IPv4 地址。
  8. 将地址复制到您的 WP config.php 文件中,例如:define('DB_HOST', 'xx.xx.xxx.xxx:3306');

您的 WP 站点应在下一页刷新时建立数据库连接。

【讨论】:

    【解决方案2】:

    谷歌应用引擎documentation 状态

    “调用的 Google Cloud Platform 项目正在连接到名为 的 Cloud SQL 实例。”

    您可能会收到错误消息,因为对于项目 ID,您使用的是 appengine 应用程序的项目 ID,而不是您的 Cloud SQL 项目 ID。 所以试试:

    $db = new pdo('mysql:unix_socket=/cloudsql/<sql-project-id>:<sql-instance-name>;dbname=<db-name>', 'root', '');
    

    【讨论】:

      【解决方案3】:

      确保您的应用引擎实例和 Cloud SQL 实例设置为同一区域。

      默认情况下,应用引擎设置为美国。

      最后,检查您是否已在 Cloud SQL 实例中授权您的应用引擎应用。

      【讨论】:

        猜你喜欢
        • 2014-05-28
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 2017-12-21
        • 1970-01-01
        相关资源
        最近更新 更多