【问题标题】:Connect external SQL Server (MSSQL) from linux in Codeigniter在 Codeigniter 中从 linux 连接外部 SQL Server (MSSQL)
【发布时间】:2016-12-14 15:25:01
【问题描述】:

我有一个 Debian 服务器来运行我的 CodeIgniter 项目。我使用 MySQL 作为我的数据库。

现在,我需要连接外部数据库。但这不是 MySQL 服务器,而是 SQL Server。

我试过了:

$db['external']['hostname'] = 'tcp:[nameserver],[port]';
$db['external']['username'] = '[username]';
$db['external']['password'] = '[password]';
$db['external']['database'] = '[dataBaseName]';
$db['external']['dbdriver'] = 'mssql';
$db['external']['dbprefix'] = '';
$db['external']['pconnect'] = FALSE;
$db['external']['db_debug'] = TRUE;
$db['external']['cache_on'] = FALSE;
$db['external']['cachedir'] = '';
$db['external']['char_set'] = 'utf8';
$db['external']['dbcollat'] = 'utf8_general_ci';
$db['external']['swap_pre'] = '';
$db['external']['autoinit'] = TRUE;
$db['external']['stricton'] = FALSE;

我的测试文件是这样的:

$DB2 = $this->load->database('external', TRUE); 
$rs = $DB2->query("SELECT * FROM table");
$ret = $rs->result_array();
var_dump($ret);

当我执行文件测试时,输出是:

外部公司可以正常连接,所以凭证没问题。

当我使用$db['external']['dbdriver'] = 'sqlsrv' 时,输出是

致命错误:调用未定义函数 sqlsrv_connect()

我该如何解决这个问题?

【问题讨论】:

  • 我遇到了同样的问题,想找到一种方法来解决这个问题。我已经可以使用Adminer从同一台机器连接到mssql,所以问题是要弄清楚如何在Codeigniter中做到这一点。
  • 不过,我没有遇到与您相同的错误。显然我可以连接到数据库,但查询返回空,因为我没有收到“无法连接...”错误。让我想知道。

标签: php sql-server codeigniter connection debian


【解决方案1】:

来自the documentation

SQLSRV 扩展可用于以下操作系统:

  • Windows Vista Service Pack 2 或更高版本
  • Windows Server 2008 Service Pack 2 或更高版本
  • Windows Server 2008 R2
  • Windows 7

您的 Debian 服务器将无法使用 sqlsrv_ 函数。

如果您需要从 Linux 连接到 SQL Server,您可以使用the PDO_DBLIB library。在 CodeIgniter 中,您似乎需要 set the DSN manually:

某些数据库驱动程序(例如 PDO、PostgreSQL、Oracle、ODBC)可能需要提供完整的 DSN 字符串。如果是这种情况,您应该使用“dsn”配置设置,就像使用驱动程序的底层原生 PHP 扩展一样

您必须在连接字符串中使用PDO_DBLIB DSN,它可能以sybase:mssql:dblib: 开头(取决于PHP 的编译方式)。看起来 Debian 软件包可能是use the sybase: prefix

【讨论】:

    【解决方案2】:

    试试这个 $rs = $this->DB2->query("SELECT * FROM table");

    【讨论】:

    • 这似乎没有回答这个问题。现在您已经获得了 50 点声望点,您可以(并且应该)使用 cmets 要求澄清。答案部分只能用于提供答案。
    猜你喜欢
    • 2016-08-03
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多