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
Я делаю что-то неправильно?
Спасибо,
Ответы
Ответ 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';