Sql server 使用CodeIgniter与MAMP和MSSQL(SQL Server)没有DB连接

Sql server 使用CodeIgniter与MAMP和MSSQL(SQL Server)没有DB连接,sql-server,codeigniter,mamp,Sql Server,Codeigniter,Mamp,我正在OSX上运行MAMP 3.0,并试图连接到远程SQL Server数据库,但运气不好。关于在我的MAMP php安装中启用mssql,我已经了解了其他支持问题。一切看起来都是正确的,mssqlsupport在phpinfo()中显示为已启用 该项目在使用sqlsrv驱动程序的CodeIgniter中,当运行db连接测试时,我在屏幕上看不到任何内容,在MAMP日志或CI日志中也没有错误。所有调试和错误报告似乎都已打开 我刚刚继承了这个代码库,对CI不是很熟悉,但如果能在前进中得到任何帮助,我

我正在OSX上运行MAMP 3.0,并试图连接到远程SQL Server数据库,但运气不好。关于在我的MAMP php安装中启用mssql,我已经了解了其他支持问题。一切看起来都是正确的,mssqlsupport在phpinfo()中显示为已启用

该项目在使用sqlsrv驱动程序的CodeIgniter中,当运行db连接测试时,我在屏幕上看不到任何内容,在MAMP日志或CI日志中也没有错误。所有调试和错误报告似乎都已打开

我刚刚继承了这个代码库,对CI不是很熟悉,但如果能在前进中得到任何帮助,我将不胜感激

更新:在查询时,我能够在没有像这样的CI DB类的情况下返回数据

$dbhandle = mssql_connect('host', 'user', 'password')
        or die("Couldn't connect to SQL Server.");

$selected = mssql_select_db('mydb', $dbhandle) or die("Couldn't open database.");

$query = "SELECT TOP 5 user_id, username FROM users";
$result = mssql_query($query);
但不使用

$this->load->database('production');
print '<b>Database Version:</b> ' . $this->db->version() . '<br />';
当我调查sqlsrv_driver.php时,我可以看到它在尝试使用@sqlsrv_connect时失败了,但它没有返回任何错误。它在继续之前就死了。我尝试在脚本尝试创建$res后退出脚本,但没有返回任何内容。它永远不会超越@sqlsrv_connect()

以下是我的配置/数据库设置:

$active_group = 'production';
$active_record = TRUE;

$db['production']['hostname'] = 'XXX';
$db['production']['username'] = 'XXX';
$db['production']['password'] = 'XXX';
$db['production']['database'] = 'XXX';
$db['production']['dbdriver'] = 'sqlsrv';
$db['production']['dbprefix'] = '';
$db['production']['pconnect'] = TRUE;
$db['production']['db_debug'] = TRUE;
$db['production']['cache_on'] = FALSE;
$db['production']['cachedir'] = '';
$db['production']['char_set'] = 'UTF-8';
$db['production']['swap_pre'] = '';
$db['production']['autoinit'] = TRUE;
$db['production']['stricton'] = FALSE;

值得注意的是,在实际的生产站点上,一切都很好,但它是一台运行Apache(和PHP)的Windows机器。在安装过程中,还为CodeIgniter编写了一个定制的sqlsrv驱动程序,使事情变得更加混乱。不过,我相信@sqlsrv_connect($hostname,$connectionInfo)的故障是主要问题,到目前为止,我已经成功地使用PDO和类似的db配置使用CodeIgniter连接到MSSQL:

$db['production']['hostname'] = 'sqlsrv:server=yourserver;database=yourdb;encrypt=true;trustservercertificate=true';
$db['production']['dbdriver'] = 'pdo';
不幸的是,您还需要将core/drivers/pdo/pdo_driver.php第82行更改为:

empty($this->database) OR $this->hostname .= ';dbname='.$this->database;
致:


你的mssql连接在config/database.php中是什么样子的?@suncastkid我已经在我的原始帖子中添加了db配置。感谢您的帮助。不幸的是,这不是一个选项,因为之前的开发人员编写了一个定制的sqlsrv_驱动程序,应用程序依赖它。从我现在阅读的内容来看,我不确定您是否可以从非Windows平台使用sqlsrv_connect:
$db['production']['hostname'] = 'sqlsrv:server=yourserver;database=yourdb;encrypt=true;trustservercertificate=true';
$db['production']['dbdriver'] = 'pdo';
empty($this->database) OR $this->hostname .= ';dbname='.$this->database;
if (strstr($this->hostname, 'sqlsrv') == TRUE){
    $this->hostname; 
} else {
    $this->hostname .= ";dbname=".$this->database;
}