首页 > 解决方案 > 无法从 CodeIgniter 2.1.3 连接到本地 SQL Server Express 实例,我缺少什么?

问题描述

我将开始说,我尝试了几乎所有可以在 Internet 上找到的东西,包括以下列表:

我没试过什么?正如许多答案所说,使用 Microsoft SQL Server 扩展。

这是我的database.php配置的样子:

$active_group = 'mssql_local';

$db['mssql_local']['hostname'] = 'localhost:1433'; // RNDPC\SQLEXPRESS:1433
$db['mssql_local']['username'] = 'ssUser';
$db['mssql_local']['password'] = '******';
$db['mssql_local']['database'] = 'ssDB';
$db['mssql_local']['dbdriver'] = 'mssql';
$db['mssql_local']['dbprefix'] = '';
$db['mssql_local']['pconnect'] = false;
$db['mssql_local']['db_debug'] = false;
$db['mssql_local']['cache_on'] = false;
$db['mssql_local']['cachedir'] = '';
$db['mssql_local']['char_set'] = 'utf8';
$db['mssql_local']['dbcollat'] = 'utf8_general_ci';
$db['mssql_local']['swap_pre'] = '';
$db['mssql_local']['autoinit'] = true;
$db['mssql_local']['stricton'] = false;
$db['mssql_local']['port']     = 1433;

但我一直在我的日志中看到以下“警告”:

错误 - 2019-03-20 10:18:31 --> 严重性:警告 --> mssql_connect():无法连接到服务器:localhost:1433,1433 /var/www/html/sseditor/codeigniter/2.1.3 /系统/数据库/驱动程序/mssql/mssql_driver.php 63

这是一个片段mssql_driver.php

56  function db_connect()
57  {
58      if ($this->port != '')
59      {
60          $this->hostname .= ','.$this->port;
61      }
62
63      return @mssql_connect($this->hostname, $this->username, $this->password);
64  }

这里有更好的主意吗?我用完了它们:|

标签: phpsql-servercodeignitercodeigniter-2

解决方案


经过数小时的头痛后,我发现了问题/解决方案。我正要删除这个问题,但我更愿意回答自己,即使这对我的声誉造成了问题,但我很确定可以节省一些人的时间和精力。

首先,我完全忘记将这部分添加到 OP(为此道歉)apache 和 PHP 在 CentOS VM(Vagrant+VBox)中运行。

问题:运行 LAMP 环境的来宾对主机一无所知,这很有意义。

解决方法:将主机IP地址和NS添加到/etc/hostsguest上的文件中。

190.168.56.1    RNDPC\SQLEXPRESS SQLEXPRESS

这解决了有关以下消息的问题:

无法连接到服务器:RNDPC\SQLEXPRESS:1433,1433

第二个问题与以下有关:

RNDPC\SQLEXPRESS:1433,1433

因为驱动程序如果port指定了参数,则添加,port.

解决方案:从定义中删除端口参数,并将端口“硬编码”到定义database.php的末尾。host

现在我的database.php样子:

$db['mssql_common']['hostname'] = 'RNDPC\SQLEXPRESS:1433';
$db['mssql_common']['username'] = 'ssUser';
$db['mssql_common']['password'] = '*****';
$db['mssql_common']['database'] = 'ssDB';
$db['mssql_common']['dbdriver'] = 'mssql';
$db['mssql_common']['dbprefix'] = '';
$db['mssql_common']['pconnect'] = false;
$db['mssql_common']['db_debug'] = false;
$db['mssql_common']['cache_on'] = false;
$db['mssql_common']['cachedir'] = '';
$db['mssql_common']['char_set'] = 'utf8';
$db['mssql_common']['dbcollat'] = 'utf8_general_ci';
$db['mssql_common']['swap_pre'] = '';
$db['mssql_common']['autoinit'] = true;
$db['mssql_common']['stricton'] = false;

希望这对将来的人有所帮助:)


推荐阅读