Codeigniter: подключение к базе данных Amazon RDS SSL
у меня возникли проблемы с подключением к сервису Amazons RDS из моего приложения Codeigniter.
настройки в конфигурации базы данных:
$db['default']['ssl_set'] = TRUE;
$db['default']['ssl_key'] = NULL;
$db['default']['ssl_cert'] = NULL;
$db['default']['ssl_ca'] = realpath('./application/third_party/mysql-ssl-ca-cert.pem');
$db['default']['ssl_capath'] = NULL;
$db['default']['ssl_cipher'] = NULL;
однако, когда я подключиться. Я получаю сообщение:
невозможно выбрать указанную базу данных: постановка Имя файла. :..systemdatabaseDB_driver.РНР Номер Строки: 140
строка 40 показана здесь:
// Select the DB... assuming a database name is specified in the config file
if ($this->database != '')
{
if ( ! $this->db_select())
{
log_message('error', 'Unable to select database: '.$this->database);
if ($this->db_debug)
{
$this->display_error('db_unable_to_select', $this->database); // LINE 140
}
return FALSE;
}
Я следующие изменения to get mysqli
работа с SSL:
Я удивлен, что он успешно подключен, так как жалуется на выбор базы данных. Не знаете, куда идти отсюда?
я использую PHP 5.3.8
на машине windows.
обновление
это превращается больше в ошибку, чем в проблему с моей реализацией. Если я установлю $db['default']['db_debug']
to false
. Я больше не понимаю этой проблемы. Тем не менее, я получаю кучу предупреждений, связанных с:
Severity: Warning
Message: mysqli_real_escape_string() [function.mysqli-real-escape-string]: invalid object or resource mysqli
Filename: mysqli/mysqli_driver.php
Line Number: 346
что означает не удалось подключиться к базе данных по протоколу SSL.
обновление 2
я использую XAMPP.
и я использую Codeingiter 2.0.2.
обновление 3
файл конфигурации моей базы данных:
$db['default']['hostname'] = 'xxxx.us-east-1.rds.amazonaws.com';
$db['default']['username'] = 'xxxxx';
$db['default']['password'] = 'xxxx';
$db['default']['database'] = 'xxxx';
$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;
$db['default']['ssl_set'] = true;
$db['default']['ssl_key'] = NULL;
$db['default']['ssl_cert'] = NULL;
$db['default']['ssl_ca'] = realpath('./application/third_party/mysql-ssl-ca-cert.pem');
$db['default']['ssl_capath'] = NULL;
$db['default']['ssl_cipher'] = NULL;
1 ответов
$db['default']['port'] = 3306;
попробуйте добавить это в конфигурацию db. mysql_real_connect()
ожидает, что param 6 будет длинным int; останавливается на пустой строке.
обновление
функция ниже строки 140 в DB_Driver, где dbcollat и кодировка установлены. Они ударят real_escape в драйвере и вызовут escape_error, если не правильно.
попробовать
$db['default']['dbcollat']='';
или проверьте, что кодировка вашей БД установлена для того, что у вас есть в конфигурации БД. т. е. если ваша кодировка БД latin1 и вы используете utf-8, conn_id будет неправильным, и mysqli_escape будет отказываться.