2013-04-10 24 views
11

Zrobiłem, co następuje:jak połączyć się z bazą danych w aplikacji openshift

Baza danych MySQL 5.1 została dodana. Proszę zanotować tych mandatów:

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


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

Możesz zarządzać swoją nową bazę danych MySQL przez phpMyAdmin również osadzenie-3.4. Nazwa użytkownika i hasło phpmyadmin będą takie same jak dane logowania MySQL powyżej.

phpMyAdmin 3.4 dodane. Proszę zanotować tych poświadczeń MySQL ponownie:

Root User: xxxxxxx 
    Root Password: xxxxxxx 

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

i próbuję połączyć db używając miech kod PDO .Ale nie działa

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

nie wiem co to znaczy połączenie URL ?

Odpowiedz

19

Wystąpił błąd w ciągu połączenia plus $ OPENSHIFT_MYSQL_DB_ * są zmiennymi env i muszą zostać pobrane przez funkcję getenv php.

Więc spróbuj wykonać następujące czynności:

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

poniżej kod pracował dla mnie, spróbuj to może Ci pomóc

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

Otwórz phpmyadmin z webconsole, a na lewym rogu pojawi się jakiś Ip

to jest jak xx.xx.xx.xx: 3306, dzięki czemu nazwa hosta jest xx.xx.xx.xx

adres IP zadziała, próbowałem i pracowałem dla mnie

+0

Można tylko ISE to jako env zmiennej: OPENSHIFT_MYSQL_DB_HOST, jak 'echo $ OPENSHIFT_MYSQL_DB_HOST' plików w terminalu lub' getenv ('OPENSHIFT_MYSQL_DB_HOST') 'w PHP itp – Arda

+0

pracował dla mnie, dzięki – Elnoor

0

Chciałbym dodać trochę informacji do przyszłego odniesienia. Dzisiaj próbuję wdrożyć instalację Drupala do Open Shift (OS) i próbowałem skonfigurować MySql. Połączyłem się z OS przez SSH (rhc ssh), poszedł do katalogu głównego/danych/witryn/domyślnie. Po cat settings.php, aby zobaczyć, jak skonfigurować OS bazy danych. Oto ona:

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

Tak utworzonego folderu php do repozytorium git (patrz OS dokumentację o Drupal), kopiowane czyste Drupal zainstalować go i wkleić kod powyżej settings.php. Po naciśnięciu przycisku git uruchom ponownie aplikację systemu operacyjnego!

Powiązane problemy