2013-04-10 89 views
11

我做了如下如何在openshift應用程序中連接數據庫

MySQL 5.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憑據相同。

phpMyAdmin 3.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意思?

回答

19

連接字符串出現錯誤,$ 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

下面的代碼爲我工作,試試這個它可以幫助你從Web控制檯

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

打開PHP myadmin,並在左上角,你會得到一些葉

這就像XX.XX.XX.XX:3306,讓您的主機名是XX.XX.XX.XX

IP地址將工作,我已經嘗試和爲我工作

+0

您可以將此作爲env變量:OPENSHIFT_MYSQL_DB_HOST,例如終端中的'echo $ OPENSHIFT_MYSQL_DB_HOST'或PHP文件中的'getenv('OPENSHIFT_MYSQL_DB_HOST')'等。 – Arda 2015-06-30 17:52:51

+0

爲我工作,謝謝 – Elnoor 2016-04-15 01:16:56

0

我想添加一些信息,以備將來參考。 今天我試圖部署一個Drupal安裝到打開Shift(OS)並嘗試配置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的OS文檔),複製一個乾淨的Drupal安裝到它上面和粘貼代碼到settings.php中。 推到git後,重新啓動OS應用程序,並工作!

相關問題