【问题标题】:Unable to connect to local SQL Server Express instance from CodeIgniter 2.1.3, what I am missing?无法从 CodeIgniter 2.1.3 连接到本地 SQL Server Express 实例,我缺少什么?
【发布时间】:2019-08-11 07:05:15
【问题描述】:

我会开始说,我尝试了几乎所有可以在 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/system/database/drivers/mssql/mssql_driver.php 63

这是mssql_driver.php的sn-p:

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  }

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

【问题讨论】:

  • 也许是$db['mssql_local']['hostname'] = 'localhost';
  • @buildok 它也不起作用 mssql_connect(): Unable to connect to server: localhost,1433 :|
  • 你的 PHP 版本是多少?
  • @Zhorov PHP 版本 5.3.3
  • 显而易见的问题——SQL Server 是否在监听 localhost 端口 1433?

标签: php sql-server codeigniter codeigniter-2


【解决方案1】:

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

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

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

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

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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多