gpt4 book ai didi

php - Codeigniter:连接到 SSL Amazon RDS 数据库

转载 作者:可可西里 更新时间:2023-11-01 13:23:13 24 4
gpt4 key购买 nike

我在从我的 Codeigniter 应用程序连接到 Amazons RDS 服务时遇到问题。

数据库配置中的设置:

$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;

但是,当我连接时。我收到消息:

Unable to select the specified database: Staging Filename: ...\system\database\DB_driver.php Line Number: 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;
}

我制作了 following changesmysqli 使用 SSL:

我很惊讶它连接成功,因为它提示数据库选择。不确定从这里去哪里?

我在 Windows 机器上使用 PHP 5.3.8

更新

这更像是一个错误,而不是我的实现问题。如果我将 $db['default']['db_debug'] 设置为 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;

最佳答案

$db['default']['port'] = 3306;

尝试将其添加到数据库配置中。 mysql_real_connect() 期望参数 6 是一个 LONG int;对空字符串犹豫不决。


更新

DB_Driver中第140行下面的函数是设置dbcollat​​和charset的地方。那些将在驱动程序中命中 real_escape,如果不正确则导致 escape_error。

尝试

$db['default']['dbcollat']='';

或者,检查您的数据库的编码是否设置为您在数据库配置中的编码。即,如果您的数据库字符集是 latin1 而您使用的是 utf-8,则 conn_id 将是错误的并且 mysqli_escape 将停止。

关于php - Codeigniter:连接到 SSL Amazon RDS 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com