Mar*_*rcM 2 php mysql mysqli codeigniter-3
设置一个新的 CodeIgniter 3 项目我遇到了数据库访问问题。访问我的主页时,我得到:
'Unknown column 'STRICT_ALL_TABLES,' in 'field list'
Run Code Online (Sandbox Code Playgroud)
...当 Codeigniter 初始化数据库时触发。后mysqli/mysqli_driver.php电话parent::__construct()
经过一些代码和谷歌研究后,我不清楚为什么会发生这种情况。任何提示?建议?
一些细节
使用相同的数据库连接,我在同一台开发计算机上成功使用了其他 PHP 设置。(使用较旧的 codeigniter 版本)
我使用 CodeIgniter 3.1.10,与ci3-fire-starter一起安装
我的数据库配置:
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1',
'username' => 'my_username',
'password' => 'my_password',
'database' => 'my_db',
'dbdriver' => 'mysqli',
'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, // Notice I have stricton set to FALSE!
'failover' => array(),
'save_queries' => TRUE
);
Run Code Online (Sandbox Code Playgroud)
最后得到了完整的错误:
Severity: Warning
Message: mysqli::real_connect(): (42S22/1054): Unknown column 'STRICT_ALL_TABLES,' in 'field list'
Filename: mysqli/mysqli_driver.php
Line Number: 203
Backtrace:
File: C:\my\path\application\core\MY_Controller.php
Line: 26
Function: __construct
File: C:\my\path\application\core\Public_Controller.php
Line: 13
Function: __construct
File: C:\my\path\application\controllers\Welcome.php
Line: 10
Function: __construct
File: C:\my\path\index.php
Line: 325
Function: require_once
A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: C:/my/path/system/database/DB_driver.php
Line Number: 436
Run Code Online (Sandbox Code Playgroud)
自我回答的问题,以防万一它对任何人都有用:
这是关系到笨mysqli的司机很奇怪的情况class CI_DB_mysqli_driver在system\database\drivers\mysqli\mysqli_driver.php。出于某种原因,代码如下:
if (isset($this->stricton)) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
...正在设置一些导致错误的 mysqli MYSQLI_INIT_COMMAND 选项。
很容易绕过数据库设置中未设置 'stricton'标志的错误。只需将其注释掉:
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1',
'username' => 'my_username',
'password' => 'my_password',
'database' => 'my_db',
'dbdriver' => 'mysqli',
'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
);
Run Code Online (Sandbox Code Playgroud)