1

我们的站点位于 Rackspace 云站点上,目前在 PHP 5.4.1.0 上使用 Codeigniter 3.0.0 运行良好,并连接到 MSSQL 2012 数据库。Rackspace 正在将 PHP 从 5.4.1.0 升级到 5.6.7-1,并提供了测试链接,用于在新的 PHP 环境中测试我们的网站。在此测试环境中,站点不连接到 MSSQL 数据库。但是 - 没有抛出错误(无论如何我都能找到!)

这是我的数据库配置:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mssqlXXXX.XXX',
    'username' => 'USERNAME',
    'password' => 'PASSWORD',
    'database' => 'DATABASE NAME',
    'dbdriver' => 'mssql',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

作为测试,Rackspace 还让我编写了一个测试控制器。它在 Codeigniter 中也失败了。代码如下:

$username = "USERNAME";
$password = "PASSWORD";
$hostname = 'mssqlXXXX.XXX';
$dbname = "DATABASE";

//connection to the database
$dbcon = mssql_connect($hostname, $username, $password)or die("Unable to connect to MSSQL");
echo "Connected to MSSQL";

//select the database
mssql_select_db($dbname, $dbcon);

//SQL Select statement
$sqlselect = "SELECT * FROM INFORMATION_SCHEMA.TABLES";

//Run the SQL query
$sqlquery = mssql_query($sqlselect);

//Output the query results
while ($result = mssql_fetch_array($sqlquery) )
{
    echo "<br>";
    print_r($result);
    echo "<br>";
}

如果我将此脚本从 Codeigniter 环境中取出,它就可以工作。

我尝试将我的 codeigniter 数据库配置更改如下:将主机名更改为 IP 地址而不是 Rackspace 推荐值,将 dbdriver 更改为 sqlsrv,使用 dsn 字符串而不是主机名和数据库,并使用 odbc 数据库驱动程序。没有任何效果。

我对任何和所有建议持开放态度。

编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------

Rackspace 说“freetds 的问题,这是一个使用我的 PHP 的 mssql 模块连接到 MSSQL 数据库的库;问题似乎围绕着使用超过 30 个字符的密码。”

所以 - 我缩短了我的密码。现在上面提到的测试控制器工作了!欢呼!但是 - 标准的 Codeigniter 数据库连接没有。

4

1 回答 1

0

问题出在 Rackspace 上,他们已经纠正了。

于 2015-08-28T17:25:06.380 回答