Неизвестный столбец STRICT_ALL_TABLES, устанавливающий соединение с БД CodeIgniter - PullRequest
0 голосов
/ 17 января 2019

Настройка нового проекта CodeIgniter 3 Я застрял с проблемой доступа к БД. При посещении моей домашней страницы я получаю:

'Unknown column 'STRICT_ALL_TABLES,' in 'field list'

... который запускается, когда Codeigniter инициализирует базу данных. После mysqli/mysqli_driver.php звоните parent::__construct()

После некоторого кода и Google Resarch мне не понятно, почему это происходит. Есть намеки? Предложения?

Некоторые подробности

Используя то же соединение с базой данных, я успешно использую другие настройки 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
);

И, наконец, полная ошибка:

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

1 Ответ

0 голосов
/ 17 января 2019

Вопрос с самоотдачей, на всякий случай может быть полезен кому-либо:

Это довольно странная ситуация, связанная с драйвером codeigniter mysqli class CI_DB_mysqli_driver в system\database\drivers\mysqli\mysqli_driver.php. По какой-то причине код под:

if (isset($this->stricton))         { /* ... */ }

... устанавливает некоторые параметры 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
);
...