Подтвердить что ты не робот

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

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

Произошла ошибка базы данных

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

Имя файла: core/Loader.php

Номер строки: 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

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

Спасибо,

4b9b3361

Ответ 1

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

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

Ответ 2

Я думаю, что что-то не так с PHP-конфигурацией.
Во-первых, отлаживайте соединение с базой данных, используя этот script в конце. /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__); 

Затем посмотрите, что это проблема.

Ответ 3

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

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

to

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

Ответ 4

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

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

в /application/config/database.php

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

(CI 3) Для меня работа изменилась:

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

Ответ 8

Расширение @Valeh Hajiyev замечательного и ясного ответа для тестов драйвера mysqli:

Отладьте соединение с базой данных, используя этот скрипт в конце. /config/database.php:

/* Your db config here */ 
$db['default'] = array(
  // ...
  'dbdriver'     => 'mysqli',
  // ...
);

/* Connection test: */

echo '<pre>';
print_r($db['default']);
echo '</pre>';

echo 'Connecting to database: ' .$db['default']['database'];

$mysqli_connection = new MySQLi($db['default']['hostname'],
                                $db['default']['username'],
                                $db['default']['password'], 
                                $db['default']['database']);

if ($mysqli_connection->connect_error) {
   echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
   echo "Connected.";
}
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__);

Ответ 9

Проблема решена!

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

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

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

Ответ 10

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

И затем получена ошибка: Code Igniter needs mysql_pconnect() in order to run.

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

Ответ 11

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

Ответ 12

В моем случае проблема хранения была проблемой. Мой жесткий диск был заполнен... Освободите немного места на оборудовании, и ваш сайт будет работать нормально

Ответ 13

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

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

$db['default']['hostname'] = 'localhost';