【问题标题】:CodeIgniter to SQL Server get errror :TCP Provider: The semaphore timeout period has expiredCodeIgniter 到 SQL Server 得到错误:TCP Provider: The semaphore timeout period has expired
【发布时间】:2021-03-19 02:33:04
【问题描述】:

我想将我的 CodeIgniter 应用程序连接到 SQL Server,但收到此错误消息

错误(sqlsrv_query):数组([0] => 数组([0] => 08S01 [SQLSTATE] => 08S01 [1] => 121 [code] => 121 [2] => [Microsoft][SQL Server Native Client 10.0]TCP Provider:信号量超时期限已过。 [消息] => [Microsoft][SQL Server Native Client 10.0]TCP 提供程序: 信号量超时期限已过。 ) [1] => 数组 ([0] => 08S01 [SQLSTATE] => 08S01 [1] => 121 [代码] => 121 [2] => [Microsoft][SQL Server Native Client 10.0]通讯链路故障 [消息] => [微软][SQL Server Native Client 10.0]通讯 链接失败))

这是我的配置:

$db['sqlsrv11']['hostname'] = "host";
    $db['sqlsrv11']['username'] = "username";
    $db['sqlsrv11']['password'] = "password";
    $db['sqlsrv11']['database'] = "database";
    $db['sqlsrv11']['dbdriver'] = "sqlsrv";
    $db['sqlsrv11']['dbprefix'] = "";
    $db['sqlsrv11']['pconnect'] = FALSE;
    $db['sqlsrv11']['db_debug'] = TRUE;
    $db['sqlsrv11']['cache_on'] = FALSE;
    $db['sqlsrv11']['cachedir'] = "";
    $db['sqlsrv11']['char_set'] = "utf8";
    $db['sqlsrv11']['dbcollat'] = "utf8_general_ci";
    $db['sqlsrv11']['swap_pre'] = '';
    $db['sqlsrv11']['autoinit'] = FALSE;
    $db['sqlsrv11']['stricton'] = FALSE;

我从这一行得到了这个错误

$query = sqlsrv_query($conn, $query_sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
            if ($query === false) {
                echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
                exit;
            }

我的 SQL Server 是 13,PHP 7.1,CI 3.1.1,我正在使用 sqlsrv74 dll

请帮我解决这个错误。谢谢。

【问题讨论】:

  • 您可能没有在application/ config/ autoload.config 文件中包含download

标签: php sql-server codeigniter


【解决方案1】:

问题可能是您可能没有在位于application/ config/ autoload.config 的自动加载文件中包含$autoload['libraries'] = array('database','session');

如果您已完成此操作,请尝试为连接添加以下配置:

 $active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'DNS'   => 'username=host=localhost;port=the_posrt_no;dbname=databse_name',
    'hostname' => 'localhost',
    'username' => 'your_username',
    'password' => 'pass',
    'database' => 'your_database name',
    'dbdriver' => 'mysqli',
    'port' => '5432',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

【讨论】:

  • 感谢您的回复,经过一段时间的调试,我发现错误是因为我使用的是非透视查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2018-03-19
相关资源
最近更新 更多