CodeIgniter: невозможно подключиться к серверу базы данных, используя предоставленные настройки. Сообщение об ошибке

Я использую CI просто отлично, используя драйвер MySQL. Я хочу использовать драйвер mysqli вместо этого, но как только я его поменяю (просто добавьте «i» в конец mysql и добавьте номер порта), я получаю следующее сообщение об ошибке

A Database Error Occurred Unable to connect to your database server using the provided settings. Filename: core/Loader.php Line Number: 232 

моя настройка выглядит так:

 $db['default']['hostname'] = $hostname; $db['default']['username'] = $username; $db['default']['password'] = $password; $db['default']['database'] = $database; $db['default']['dbdriver'] = 'mysqli'; $db['default']['port'] = "3306"; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $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; where $hostname = 'localhost'; $username = 'myusernamegoeshere'; $password = 'mypasswordgoeshere'; $database = 'mydatabasenamegoeshere'; 

Использование: CI 2.0.2 php 5.3.4 Apache / 2.2.17 (Unix) mysql 5.5.13 mysql.default_port 3306

Я что-то делаю неправильно?

Спасибо,

Для меня проблема была в файле php.ini. Свойство mysql.default_socket указывало на файл в несуществующей директории. Свойство указывало на /var/mysql/mysql.sock но в OSX файл находился в /tmp/mysql.sock .

Как только я обновил запись в php.ini и перезапустил веб-сервер, проблема была решена.

Я думаю, что что-то не так с PHP-конфигурацией.
Во-первых, отлаживайте соединение с базой данных, используя этот скрипт в конце ./config/database.php :

 ... ... ... echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Connecting to database: ' .$db['default']['database']; $dbh=mysql_connect ( $db['default']['hostname'], $db['default']['username'], $db['default']['password']) or die('Cannot connect to the database because: ' . mysql_error()); mysql_select_db ($db['default']['database']); echo '<br /> Connected OK:' ; die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); по ... ... ... echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Connecting to database: ' .$db['default']['database']; $dbh=mysql_connect ( $db['default']['hostname'], $db['default']['username'], $db['default']['password']) or die('Cannot connect to the database because: ' . mysql_error()); mysql_select_db ($db['default']['database']); echo '<br /> Connected OK:' ; die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); по ... ... ... echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Connecting to database: ' .$db['default']['database']; $dbh=mysql_connect ( $db['default']['hostname'], $db['default']['username'], $db['default']['password']) or die('Cannot connect to the database because: ' . mysql_error()); mysql_select_db ($db['default']['database']); echo '<br /> Connected OK:' ; die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); по ... ... ... echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Connecting to database: ' .$db['default']['database']; $dbh=mysql_connect ( $db['default']['hostname'], $db['default']['username'], $db['default']['password']) or die('Cannot connect to the database because: ' . mysql_error()); mysql_select_db ($db['default']['database']); echo '<br /> Connected OK:' ; die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); по ... ... ... echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Connecting to database: ' .$db['default']['database']; $dbh=mysql_connect ( $db['default']['hostname'], $db['default']['username'], $db['default']['password']) or die('Cannot connect to the database because: ' . mysql_error()); mysql_select_db ($db['default']['database']); echo '<br /> Connected OK:' ; die( 'file: ' .__FILE__ . ' Line: ' .__LINE__); 

Тогда посмотрим, в чем проблема.

Сегодня я столкнулся с такой проблемой на реальном сервере, и я решил проблему, изменяющую эту строку

 $db['default']['db_debug'] = TRUE; 

в

 $db['default']['db_debug'] = FALSE; 

Я решил проблему, изменив

$db['default']['pconnect'] = TRUE; TO $db['default']['pconnect'] = FALSE;

в /application/config/database.php

SET $db['default']['db_debug'] в FALSE вместо TRUE.

 $db['default']['db_debug'] = FALSE; 

Если это все, что вы изменили, у вас может не быть установлен или включен драйвер mysqli в вашей конфигурации PHP.

Проверьте его наличие с помощью phpinfo () или в файле php.ini (extension = php_mysqli ….).

Задача решена!

У меня был весь мой сайт, настроенный первым в XAMMP, тогда мне пришлось перенести его на LAMP, в установку SUSE LAMP, где я получил эту ошибку.

Проблема в том, что эти параметры в файле database.php не должны инициализироваться. Просто оставьте имя пользователя и пароль пустым. Это все.

(Мое первое и хромое предположение было бы из-за старой версии mysql, поскольку встроенные установки поставляются со старыми версиями.

(CI 3) Для меня все изменилось:

 'hostname' => 'localhost' to 'hostname' => '127.0.0.1' 

Если вы использовали это для защиты своего сервера: http://www.thonky.com/how-to/prevent-base-64-decode-hack/

А потом Code Igniter needs mysql_pconnect() in order to run ошибка: Code Igniter needs mysql_pconnect() in order to run .

Я понял это, как только я понял, что все сайты Code Igniter на сервере были сломаны, поэтому это была не проблема локализованного подключения.

Измените $db['default']['dbdriver'] = 'mysql' на $db['default']['dbdriver'] = 'mysqli'

Я решил это. В моем случае я просто изменил свою конфигурацию. «hostname» стал «localhost»

 $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost';