web-dev-qa-db-ja.com

openshiftアプリケーションでデータベースに接続する方法

私は次のようにしました

MySQL5.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認証情報と同じになります。

phpMyAdmin3.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の意味がわかりませんか?

13
Sami

接続文字列にエラーがあり、$ OPENSHIFT_MYSQL_DB_ *は環境変数であり、getenvphp関数を介してフェッチする必要があります。

したがって、次のことを試してください。

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);
19
Sumana Mehta

Webコンソールからphpmyadminを開くと、左隅にIPが表示されます。

これはxx.xx.xx.xx:3306のようなものなので、ホスト名はxx.xx.xx.xxです。

IPアドレスは機能します、私は私のために試し、働いてきました

3
geniushkg

以下のコードは私のために働いた、これを試してみてくださいそれはあなたを助けるかもしれません

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'
});
2
pitu

今後の参考のために情報を追加したいと思います。今日、私はDrupalインストールをOpenShift(OS)にデプロイし、MySqlを構成しようとしています。SSH(rhc ssh)経由でOSに接続し、app-root/data/sitesに移動しました/default。catsettings.phpに従って、OSがデータベースを構成する方法を確認します。これは次のとおりです。

// 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/';

そこで、phpフォルダーをgitリポジトリーに作成し(Drupalに関するOSドキュメントを参照)、クリーンなDrupalインストールして上記のコードをsettings.phpに貼り付けます。gitにプッシュした後、OSアプリを再起動しました。そして働いた!

0