Better connection testing
This commit is contained in:
parent
98ec8cd411
commit
f0b6788a33
@ -324,6 +324,21 @@ SQL;
|
|||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to emulate PDO->errorInfo / PDOStatement->errorInfo
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function errorInfo()
|
||||||
|
{
|
||||||
|
$code = ibase_errcode();
|
||||||
|
$msg = ibase_errmsg();
|
||||||
|
|
||||||
|
return array(0, $code, $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bind a prepared query with arguments for executing
|
* Bind a prepared query with arguments for executing
|
||||||
*
|
*
|
||||||
|
@ -247,6 +247,14 @@ class DB_Info_Widget extends GtkTable {
|
|||||||
$params->port = $this->port->get_text();
|
$params->port = $this->port->get_text();
|
||||||
$params->file = $this->db_file->get_filename();
|
$params->file = $this->db_file->get_filename();
|
||||||
|
|
||||||
|
// Return early if a db type isn't selected.
|
||||||
|
// Better to bail out then crash because of
|
||||||
|
// silly user input.
|
||||||
|
if( empty($this->dbtype->get_active_text()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$db = new Query_Builder($params);
|
$db = new Query_Builder($params);
|
||||||
@ -266,6 +274,11 @@ class DB_Info_Widget extends GtkTable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sometimes there's not an exception,
|
||||||
|
// check for an error so as not to
|
||||||
|
// give false positive connections
|
||||||
|
if(empty($db->errorInfo()))
|
||||||
|
{
|
||||||
$dialog = new GTKMessageDialog(
|
$dialog = new GTKMessageDialog(
|
||||||
NULL,
|
NULL,
|
||||||
Gtk::DIALOG_MODAL,
|
Gtk::DIALOG_MODAL,
|
||||||
@ -273,6 +286,27 @@ class DB_Info_Widget extends GtkTable {
|
|||||||
Gtk::BUTTONS_OK,
|
Gtk::BUTTONS_OK,
|
||||||
"Successfully connected"
|
"Successfully connected"
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$err = $db->errorInfo();
|
||||||
|
|
||||||
|
$msg = $err[count($err) - 1];
|
||||||
|
$code = $err[1];
|
||||||
|
|
||||||
|
$dialog = new GTKMessageDialog(
|
||||||
|
NULL,
|
||||||
|
Gtk::DIALOG_MODAL,
|
||||||
|
Gtk::MESSAGE_ERROR,
|
||||||
|
Gtk::BUTTONS_OK,
|
||||||
|
"Error connecting to database: \n\n" .
|
||||||
|
"Error # {$code}\n".
|
||||||
|
$msg
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$dialog->run();
|
$dialog->run();
|
||||||
$dialog->destroy();
|
$dialog->destroy();
|
||||||
@ -301,7 +335,7 @@ class DB_Info_Widget extends GtkTable {
|
|||||||
foreach($pdo_drivers as $d)
|
foreach($pdo_drivers as $d)
|
||||||
{
|
{
|
||||||
// Skip sqlite2 as opposed to sqlite3
|
// Skip sqlite2 as opposed to sqlite3
|
||||||
if($d === 'sqlite2' && in_array('sqlite', $pdo_drivers))
|
if($d === 'sqlite2' && (in_array('sqlite', $pdo_drivers) || in_array('sqlite3', $pdo_drivers)))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user