EllisLab/CodeIgniter — pull request #719 by fhjbalfoort (2011-11-29 14:58:20+00:00)
Title: DB_driver failover if a connection cannot be established to the main connection

The DB_driver can now use failover databases if specified
If the main connection shouldn't connect for some reason the DB_driver will now try to connect to specified connections in the failover config.

Example config:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$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']['failover'] = array();

$db['default']['failover'][0]['hostname'] = 'localhost1';
$db['default']['failover'][0]['username'] = '';
$db['default']['failover'][0]['password'] = '';
$db['default']['failover'][0]['database'] = '';
$db['default']['failover'][0]['dbdriver'] = 'mysql';
$db['default']['failover'][0]['dbprefix'] = '';
$db['default']['failover'][0]['pconnect'] = TRUE;
$db['default']['failover'][0]['db_debug'] = TRUE;
$db['default']['failover'][0]['cache_on'] = FALSE;
$db['default']['failover'][0]['cachedir'] = '';
$db['default']['failover'][0]['char_set'] = 'utf8';
$db['default']['failover'][0]['dbcollat'] = 'utf8_general_ci';
$db['default']['failover'][0]['swap_pre'] = '';
$db['default']['failover'][0]['autoinit'] = TRUE;
$db['default']['failover'][0]['stricton'] = FALSE;
$db['default']['failover'][0]['failover'] = array();

$db['default']['failover'][1]['hostname'] = 'localhost2';
$db['default']['failover'][1]['username'] = '';
$db['default']['failover'][1]['password'] = '';
$db['default']['failover'][1]['database'] = '';
$db['default']['failover'][1]['dbdriver'] = 'mysql';
$db['default']['failover'][1]['dbprefix'] = '';
$db['default']['failover'][1]['pconnect'] = TRUE;
$db['default']['failover'][1]['db_debug'] = TRUE;
$db['default']['failover'][1]['cache_on'] = FALSE;
$db['default']['failover'][1]['cachedir'] = '';
$db['default']['failover'][1]['char_set'] = 'utf8';
$db['default']['failover'][1]['dbcollat'] = 'utf8_general_ci';
$db['default']['failover'][1]['swap_pre'] = '';
$db['default']['failover'][1]['autoinit'] = TRUE;
$db['default']['failover'][1]['stricton'] = FALSE;
$db['default']['failover'][1]['failover'] = array();