2013-04-10 58 views
11

Tôi đã làm như saucách kết nối với cơ sở dữ liệu trong ứng dụng openshift

Cơ sở dữ liệu MySQL 5.1 được thêm vào. Vui lòng lưu ý các thông tin đăng nhập sau:

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


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

Bạn có thể quản lý cơ sở dữ liệu MySQL mới của mình bằng cách nhúng phpmyadmin-3.4. Tên người dùng và mật khẩu phpmyadmin sẽ giống với thông tin đăng nhập MySQL ở trên.

phpMyAdmin 3.4 đã thêm. Hãy lưu ý những thông tin MySQL lần nữa:

Root User: xxxxxxx 
    Root Password: xxxxxxx 

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

và tôi cố gắng để kết nối db sử dụng mã PDO dưới .Nhưng nó không hoạt động

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

Tôi không biết những gì là URL kết nối có nghĩa là ?

Trả lời

19

Có lỗi trong chuỗi kết nối của bạn cộng với $ OPENSHIFT_MYSQL_DB_ * là các biến env và cần được tìm nạp thông qua hàm getenv php.

Vì vậy, hãy thử như sau:

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

mã dưới đây làm việc cho tôi, hãy thử này nó có thể giúp bạn

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

mở phpmyadmin từ webconsole, và trên góc trái, bạn sẽ nhận được một số Ip

Điều đó giống như xx.xx.xx.xx: 3306, do đó tên máy chủ của bạn là xx.xx.xx.xx

địa chỉ IP wil làm việc, tôi đã cố gắng và làm việc cho tôi

+0

Bạn chỉ có thể ISE này như env biến: OPENSHIFT_MYSQL_DB_HOST, như 'echo $ OPENSHIFT_MYSQL_DB_HOST' trong thiết bị đầu cuối hoặc' getenv ('OPENSHIFT_MYSQL_DB_HOST') 'trong PHP tập tin vv – Arda

+0

Làm việc cho tôi, cảm ơn – Elnoor

0

Tôi muốn thêm một số thông tin để tham khảo trong tương lai. Hôm nay tôi đang cố gắng triển khai cài đặt Drupal cho Open Shift (OS) và cố định cấu hình MySql. Tôi kết nối với hệ điều hành thông qua SSH (rhc ssh), đi tới app-root/data/sites/default. Theo cat settings.php để xem cách cấu hình cơ sở dữ liệu của hệ điều hành. Ở đây là:

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

Vì vậy, tôi đã tạo ra một thư mục php vào kho git (xem tài liệu hệ điều hành về Drupal), sao chép một Drupal sạch cài đặt vào nó và dán mã trên để settings.php. Sau khi chuyển sang git, hãy khởi động lại ứng dụng OS và đã hoạt động!