[英]CodeIgniter On Azure Connection to Windows Virtual Machine MySql
我正在研究一個托管在Azure上的CodeIgniter Web項目,因此我決定按照本教程在運行Azure中運行Windows Server 2012 R2的虛擬機上使用MySQL,因為這似乎是最好的解決方案。 https://azure.microsoft.com/zh-CN/documentation/articles/virtual-machines-mysql-windows-server-2008r2/
我已經完成所有設置,還設法將Web項目中托管的phpmyadmin連接到虛擬機,因此它確認一切正常。
但是,Codeigniter每次都會繼續出現此錯誤
Unable to connect to your database server using the provided settings.
Filename: D:\home\site\wwwroot\system\database\DB_driver.php
Line Number: 124
我決定使用以下代碼在安裝的根目錄中創建一個測試php文件,並成功連接。
<?php
// Create connection : Update the hostname , DB username , DB password
//, database name.
$con=mysqli_connect("host","user","password",
"database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_errno();
}
else
{
echo "Connection with MySQL database was successful";
}
?>
請注意,值已更改
我進入system / database / drivers / mysql / mysql_driver.php並刪除了“ @”符號以顯示db_pconnect()的確切調試錯誤,我得到了
A PHP Error was encountered
Severity: Warning
Message: mysql_pconnect(): Access denied for user 'user'@'191.236.147.142' (using password: YES)
Filename: mysql/mysql_driver.php
Line Number: 91
但是這些相同的細節在我上面提到的一個孤獨的php腳本上起作用。 這是我的codeIgniter數據庫配置
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'myvmmysql.cloudapp.net';
$db['default']['username'] = 'user';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database';
$db['default']['port'] = 3306;
$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;
這是到目前為止我所做的總結:
謝謝
首先請記住,您無需使用文件中的數據庫代碼( mysql_connect()
)連接。 一切將由Codeigniter自行完成
因此,您無需使用此代碼(下)
<?php
// Create connection : Update the hostname , DB username , DB password
//, database name.
$con=mysqli_connect("host","user","password",
"database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_errno();
}
else
{
echo "Connection with MySQL database was successful";
}
?>
只需轉到config/autoload.php
$autoload['libraries'] = array('database')
這將連接您的數據庫。
並在config/database.php
$db['default']['hostname'] = '';//host name
$db['default']['username'] = '';//username
$db['default']['password'] = '';//password
$db['default']['database'] = '';//database name
確定文字(大寫/數字)
我嘗試使用Codeiginter的2.2.3和3.0.0版本重現您的問題,但是失敗了。 我可以成功連接到VM中的MySQL。
請嘗試按照以下步驟操作:
1,在Azure上創建一個VM,安裝並配置MySQL。請參考以下教程: https ://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-mysql-windows-server-2008r2/。
2,在Azure上創建一個Web應用程序,並從git設置部署。
3,將condeiginter包下載到本地,修改數據庫中的連接信息
\application\config\database.php
$db['default']['hostname'] = '<your vm name>.cloudapp.net';
$db['default']['username'] = '<database username>';
$db['default']['password'] = '<password>';
$db['default']['database'] = '<database name>';
4,在本地測試MySQL連接,並部署到git上面創建的Web應用程序中。 瀏覽Web應用程序。
這個對我有用。
此外,當我們向數據庫用戶鍵入no密碼時,我們可能會遇到此問題。 因此,請在application\\config\\database.php
檢查您的數據庫密碼。
順便說一句,您可以使用本地的工作台連接到MySQL Server,以檢查此錯誤是否存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.