Как подключиться к базе данных в приложении openshift

Я сделал следующее

Добавлена ​​база данных MySQL 5.1. Пожалуйста, отметьте эти полномочия:

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


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

Вы можете управлять своей новой базой данных MySQL, встраивая phpmyadmin-3.4.   Имя пользователя и пароль phpmyadmin будут такими же, как и учетные данные MySQL выше.

Добавлен

phpMyAdmin 3.4. Пожалуйста, учтите эти учетные данные MySQL еще раз:

    Root User: xxxxxxx
    Root Password: xxxxxxx

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

и я пытаюсь подключить db, используя следующий PDO-код. но он не работает

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

Я не знаю, что означает URL-адрес соединения?

Ответ 1

В вашей строке соединения есть ошибка, плюс $OPENSHIFT_MYSQL_DB_ * являются переменными env и должны быть получены с помощью функции 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

Откройте php myadmin из webconsole, а в левом углу вы получите несколько Ip

Это похоже на xx.xx.xx.xx: 3306, поэтому ваше имя хоста - xx.xx.xx.xx

Ip address wil work, я пробовал и работал у меня

Ответ 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 (ОС) и попытался настроить 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/';

Итак, я создал папку php в репозитории git (см. документацию по ОС на Drupal), скопировал на него чистую установку Drupal и вставлял код выше в settings.php. После нажатия на git перезагрузилось приложение ОС и сработало!