sql-server - Codeigniter 3 未连接到 sqlserver 数据库

标签 sql-server database codeigniter-3

简单的问题。使用 Codeigniter 2.x.x,我可以毫无问题地连接到 MS SQLServer 数据库。我现在已升级到 Codeigniter 3,但出现此错误:

A Database Error Occurred

Unable to set client connection character set: utf8

Filename: core/CodeIgniter.php

Line Number: 500

这是我的 database.php 配置文件:

Codeigniter 2.x.x --> 有效

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'XXX';
$db['default']['username'] = 'XXX';
$db['default']['password'] = 'XXX';
$db['default']['database'] = 'XXX';
$db['default']['dbdriver'] = 'mssql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Codeigniter 3 --> 错误

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

    $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'XXX',
        'username' => 'XXX',
        'password' => 'XXX',
        'database' => 'XXX',
        '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
    );

有什么想法吗?谢谢。

进一步测试包括使用 sqlsrv 驱动程序,但我收到此错误:

A PHP Error was encountered

Severity: Runtime Notice

Message: Declaration of CI_DB_sqlsrv_driver::_limit() should be compatible with that of CI_DB_query_builder::_limit()

Filename: sqlsrv/sqlsrv_driver.php

Line Number: 459

A PHP Error was encountered

Severity: Runtime Notice

Message: Declaration of CI_DB_sqlsrv_driver::_delete() should be compatible with that of CI_DB_query_builder::_delete()

Filename: sqlsrv/sqlsrv_driver.php

Line Number: 459

A PHP Error was encountered

Severity: Runtime Notice

Message: Declaration of CI_DB_sqlsrv_driver::_update() should be compatible with that of CI_DB_driver::_update()

Filename: sqlsrv/sqlsrv_driver.php

Line Number: 459

最佳答案

我最终这样做了:

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

$db['default'] = array(
    'dsn'   => 'Driver={SQL Server Native Client 10.0};Server=XXX.XX.XXX.XXX;Database=myDataBaseName;',
    'hostname' => '',
    'username' => 'XXX',
    'password' => 'XXX',
    'database' => '',
    'dbdriver' => 'odbc',
    '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
);

它完美地工作。无论如何,谢谢你的提示。

关于sql-server - Codeigniter 3 未连接到 sqlserver 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30528530/

相关文章:

sql-server - 根据用户访问级别过滤数据的策略

sql-server - 将数据解析为单独的列

sql - 如何选择/使用特定的数据库来更改多个表?

sql - 如何在不删除表的情况下更新数据库模式

php - 更新到数据库时,Codeigniter 中的 Crud 不受影响

sql - 通过连接和计数对多列进行排序

sql - 将表从 Oracle 转移到 SQL Server 的方法有哪些

mysql - ibdata1 有多少空间是元数据?

php - 将一个表中的列连接到另一个表中的另一列 CodeIgniter

php - PHP Codeigniter 中的 URL 路由