Как подключиться к базе данных в приложении 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 перезагрузилось приложение ОС и сработало!