2011-11-12 51 views
7

無法使用提供的設置連接到數據庫服務器。通過CodeIgniter連接到遠程數據庫

我一直有困難將我的應用程序連接到我的遠程數據庫。我在運行我的應用程序時收到上面顯示的錯誤。我在這個網站上看過以前對這個問題的回答,但我沒有解決它的運氣。從我所瞭解到的,我需要替換主機名,並讓我的MySQL數據庫接受外部連接,這兩者都是我完成的。我通過mysql命令行在我的database.php中嘗試了相同的值,它可以工作。

那麼我還有什麼可能失蹤?

這裏是我的設置在database.php中:

$active_group = 'staging'; 
$active_record = TRUE; 

$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = 'root'; 
$db['default']['password'] = ''; 
$db['default']['database'] = 'myDatabase'; 
$db['default']['dbdriver'] = 'mysql'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ''; 
$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE; 
$db['default']['stricton'] = FALSE; 

$db['staging']['hostname'] = 'XX.XX.XXX.XXX'; 
$db['staging']['username'] = 'user'; 
$db['staging']['password'] = 'pwd'; 
$db['staging']['database'] = 'myDatabase'; 
$db['staging']['dbdriver'] = 'mysql'; 
$db['staging']['dbprefix'] = ''; 
$db['staging']['pconnect'] = TRUE; 
$db['staging']['db_debug'] = TRUE; 
$db['staging']['cache_on'] = FALSE; 
$db['staging']['cachedir'] = ''; 
$db['staging']['char_set'] = 'utf8'; 
$db['staging']['dbcollat'] = 'utf8_general_ci'; 
$db['staging']['swap_pre'] = ''; 
$db['staging']['autoinit'] = TRUE; 
$db['staging']['stricton'] = FALSE; 
+0

你是怎麼試試這麼遠嗎?給出數據庫配置的代碼。 –

+0

我用我的數據庫配置編輯了我的問題。 – Mikey

+0

似乎是正確的。 –

回答

4

從你的shell試試這個命令來查看是否可以連接:

mysql -h HOSTNAME -uUSERNAME -p DATABASE 

也檢查一下,如果你不具備一個不同的端口連接到mysql設置,默認情況下codeigniter將連接到3306,除非你定義了實際的端口集。這可能是問題。

好運

+1

我可以使用該命令進行連接。港口沒有什麼不同。 – Mikey

+0

是的,你應該看到mysql的提示符,但它看起來像你在Windows上,因爲你使用的是一個exe文件,該命令是爲基於unix的機器而設計的。你是用staging config來連接,如下所示:'$ this-> db_staging = $ this-> CI-> load-> database('staging',TRUE);'? –

+0

對於刪除先前的評論感到抱歉,我意識到我沒有正確編寫你的命令。不,我沒有使用那樣的登臺配置。不,我只是像這樣在構造函數中加載我的數據庫:$ this-> CI-> load-> database()。 – Mikey

1
$active_group = 'staging'; 
$active_record = TRUE; 

嘗試上面的代碼更改爲

$active_group = 'default'; 
$active_record = TRUE; 
0

如果你已經在你的服務器強制執行SELinux策略請確保您啓用httpd_can_network_connect布爾標誌

setsebool -P httpd_can_network_connect=1