【问题标题】:how to connect to the database in openshift application如何在openshift应用程序中连接到数据库
【发布时间】:2016-08-04 01:05:45
【问题描述】:

我做了如下

添加了 MySQL 5.1 数据库。请记下这些凭据:

    Root User: xxxxxxx
    Root Password: xxxxxxx
    Database Name: php


 Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/

您还可以通过嵌入 phpmyadmin-3.4 来管理新的 MySQL 数据库。 phpmyadmin 用户名和密码将与上面的 MySQL 凭据相同。

添加了 phpMyAdmin 3.4。请再次记下这些 MySQL 凭据:

    Root User: xxxxxxx
    Root Password: xxxxxxx

    URL: https://php-doers.rhcloud.com/phpmyadmin/

我尝试使用下面的 PDO 代码连接数据库。但它不起作用

$dbh = new PDO('mysql:host=mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/;dbname=php', "xxxxxx, "xxxxxx");

我不知道连接URL是什么意思?

【问题讨论】:

    标签: php pdo cloud openshift


    【解决方案1】:

    您的连接字符串中有错误,加上 $OPENSHIFT_MYSQL_DB_* 是环境变量,需要通过 getenv php 函数获取。

    所以尝试以下方法:

    define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
    define('DB_PORT',getenv('OPENSHIFT_MYSQL_DB_PORT')); 
    define('DB_USER',getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
    define('DB_PASS',getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
    define('DB_NAME',getenv('OPENSHIFT_GEAR_NAME'));
    
    $dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';port='.DB_PORT;
    $dbh = new PDO($dsn, DB_USER, DB_PASS);
    

    【讨论】:

      【解决方案2】:

      从 webconsole 中打开 php myadmin,在左上角你会得到一些 Ip

      就像 xx.xx.xx.xx:3306 ,所以你的主机名是 xx.xx.xx.xx

      IP 地址可以使用,我已经尝试过并为我工作过

      【讨论】:

      • 您可以将其作为环境变量:OPENSHIFT_MYSQL_DB_HOST,例如终端中的echo $OPENSHIFT_MYSQL_DB_HOST 或PHP 文件中的getenv('OPENSHIFT_MYSQL_DB_HOST') 等。
      【解决方案3】:

      下面的代码对我有用,试试这个可能对你有帮助

      var mysql = require('mysql');
      
      var mysql = require('mysql');
      exports.pool = mysql.createPool({
          host: process.env.OPENSHIFT_MYSQL_DB_HOST || 'localhost',
            port: process.env.OPENSHIFT_MYSQL_DB_PORT || '3306',
            user: process.env.OPENSHIFT_MYSQL_DB_USERNAME || 'root',
            password: process.env.OPENSHIFT_MYSQL_DB_PASSWORD ||  '',
            database: 'chichat' || 'chichat',
            multipleStatements : true,
            charset: 'utf8'
      });
      

      【讨论】:

        【解决方案4】:

        我想添加一些信息以供将来参考。 今天我正在尝试将 Drupal 安装部署到 Open Shift (OS) 并尝试配置 MySql。 我通过 SSH (rhc ssh) 连接到操作系统,转到 app-root/data/sites/default。跟随 cat settings.php 看看操作系统如何配置数据库。 这里是:

        // When run from Drush, only $_ENV is available.  Might be a bug
        if (array_key_exists('OPENSHIFT_APP_NAME', $_SERVER)) {
          $src = $_SERVER;
        } else {
          $src = $_ENV;
        }
        $databases = array (
          'default' => 
          array (
            'default' => 
            array (
              'database' => $src['OPENSHIFT_APP_NAME'],
              'username' => $src['OPENSHIFT_MYSQL_DB_USERNAME'],
              'password' => $src['OPENSHIFT_MYSQL_DB_PASSWORD'],
              'host' => $src['OPENSHIFT_MYSQL_DB_HOST'],
              'port' => $src['OPENSHIFT_MYSQL_DB_PORT'],
              'driver' => 'mysql',
              'prefix' => '',
            ),
          ),
        );
        $conf['file_private_path'] = $src['OPENSHIFT_DATA_DIR'] . 'private/';
        $conf['file_temporary_path'] = $src['OPENSHIFT_TMP_DIR'] . 'drupal/';
        

        所以我在 git 存储库中创建了一个 php 文件夹(请参阅有关 Drupal 的操作系统文档),将干净的 Drupal 安装复制到其中并将上面的代码粘贴到 settings.php。 推送到 git 后,重新启动 OS 应用程序并运行!

        【讨论】:

          猜你喜欢
          • 2012-08-08
          • 2016-06-06
          • 2014-04-24
          • 2014-04-04
          • 2014-07-01
          • 2015-09-07
          • 2013-03-05
          • 1970-01-01
          • 2016-07-26
          相关资源
          最近更新 更多