【发布时间】:2015-10-19 21:36:08
【问题描述】:
我正在开发托管在 Azure 上的 CodeIgniter Web 项目,我决定按照本教程在 Azure 中运行 Windows Server 2012 R2 的虚拟机上使用 MySQL,因为它似乎是最好的解决方案。 https://azure.microsoft.com/en-gb/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;
这是我到目前为止所做的总结:
- 我已经为 $db['default']['dbdriver'] 尝试了 mysql、mysqli 和 sqlsrv
- 我也在test.php文件中尝试了mysql,它仍然连接到数据库
- 我已授予虚拟机中所有域对端口的公共访问权限
- 我已将所有权限授予来自所有域的数据库用户
- 除了在 codeigniter 中之外,Connection 基本上适用于任何地方。
- 我也尝试过更改 $db['default']['pconnect'] = FALSE;不是 在职的 注意:我已经完成了将数据库与 codeigniter 一起使用所涉及的必要事项......不仅如此
谢谢
【问题讨论】:
-
在数据库配置中尝试使用 $db['default']['pconnect'] = FALSE;
-
@Ashish 对不起,我忘了提...我也做过...也不行
-
您在本期中使用了哪个版本的 Codeigniter?您选择哪台服务器来托管您的 codeigniter 应用程序、Web 应用程序或 VM?
-
@GaryLiu-MSFT 我将 codeigniter 作为 web 应用程序托管在 azure 上...及其 codeigniter 版本 2.1.4
标签: php mysql codeigniter azure virtual-machine