it-swarm.com.ru

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

Я делаю что-то не так?

Спасибо,

48
Onema

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

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

29
ken

Я думаю, что с настройкой 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__); 

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

102
Valeh Hajiyev

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

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

в 

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

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

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

в /application/config/database.php

29
kamal

Установите $db['default']['db_debug'] в FALSE вместо TRUE.

$db['default']['db_debug'] = FALSE;
16
Bhumi Singhal

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

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

3
Craig A Rodway

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

'hostname' => 'localhost' to 'hostname' => '127.0.0.1'
2
Shina

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

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

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

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

1
Helena

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

0
Bappi Datta

Расширение @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__);
0
MarcM

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

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

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

0
Lawrence