2013-04-10 13 views
11

Ho fatto come seguecome connettersi al database nell'applicazione openshift

Database MySQL 5.1 aggiunto. Si prega di prendere nota di queste credenziali:

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


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

è possibile gestire il nuovo database MySQL per l'incorporamento anche phpMyAdmin-3.4. Il nome utente e la password di phpmyadmin corrisponderanno alle credenziali MySQL di cui sopra.

phpMyAdmin 3.4 aggiunto. Si prega di prendere nota di queste credenziali MySQL ancora:

Root User: xxxxxxx 
    Root Password: xxxxxxx 

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

e provo a collegarlo db utilizzando il codice DOP soffietto .ma non funziona

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

Non so che cosa è dire l'URL di connessione ?

risposta

19

C'è un errore nella stringa di connessione più $ OPENSHIFT_MYSQL_DB_ * sono variabili env e devono essere recuperate tramite la funzione getenv php.

Quindi provare quanto segue:

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

sottostante Codice lavorato per me, provate questo potrebbe aiutarti

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

Aperto PhpMyAdmin da webconsole, e sulla sinistra si otterrà qualche Ip

che è come xx.xx.xx.xx: 3306, così il vostro hostname è xx.xx.xx.xx

indirizzo IP lavoro, ho provato e lavorato per me

+0

Si può solo Ise questo come variabile ENV: OPENSHIFT_MYSQL_DB_HOST, come ad esempio '$ OPENSHIFT_MYSQL_DB_HOST' nel terminale o' getenv ('OPENSHIFT_MYSQL_DB_HOST') 'in PHP file di eco, ecc – Arda

+0

ha funzionato per me, grazie – Elnoor

0

Vorrei aggiungere alcune informazioni a riferimento futuro. Oggi sto provando a distribuire un'installazione Drupal su Open Shift (OS) e ho provato a configurare MySql. Mi sono collegato al sistema operativo tramite SSH (rhc ssh), andato a app-root/data/sites/default. Seguendo cat settings.php per vedere come il SO configura il database. Eccolo:

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

così ho creato una cartella php in repository git (vedere la documentazione del sistema operativo su Drupal), copiato un Drupal installazione pulita ad esso e incollare il codice qui sopra per settings.php. Dopo aver premuto per git, riavviato l'app del sistema operativo e ha funzionato!

Problemi correlati