diff --git a/adminer/database.inc.php b/adminer/database.inc.php index 61b71443..a0c06b4f 100644 --- a/adminer/database.inc.php +++ b/adminer/database.inc.php @@ -2,7 +2,6 @@ $row = $_POST; if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x - restart_session(); $name = trim($row["name"]); if ($_POST["drop"]) { $_GET["db"] = ""; // to save in global history @@ -24,6 +23,8 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c $last = $db; } } + restart_session(); + set_session("dbs", null); queries_redirect(ME . "db=" . urlencode($last), lang('Database has been created.'), $success); } } else { diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index def95e3b..91cdeb01 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -584,7 +584,6 @@ if (!defined("DRIVER")) { * @return string */ function create_database($db, $collation) { - set_session("dbs", null); return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " COLLATE " . q($collation) : "")); } @@ -593,9 +592,10 @@ if (!defined("DRIVER")) { * @return bool */ function drop_databases($databases) { + $return = apply_queries("DROP DATABASE", $databases, 'idf_escape'); restart_session(); set_session("dbs", null); - return apply_queries("DROP DATABASE", $databases, 'idf_escape'); + return $return; } /** Rename database from DB @@ -604,18 +604,21 @@ if (!defined("DRIVER")) { * @return bool */ function rename_database($name, $collation) { + $return = false; if (create_database($name, $collation)) { //! move triggers $rename = array(); foreach (tables_list() as $table => $type) { $rename[] = table($table) . " TO " . idf_escape($name) . "." . table($table); } - if (!$rename || queries("RENAME TABLE " . implode(", ", $rename))) { + $return = (!$rename || queries("RENAME TABLE " . implode(", ", $rename))); + if ($return) { queries("DROP DATABASE " . idf_escape(DB)); - return true; } + restart_session(); + set_session("dbs", null); } - return false; + return $return; } /** Generate modifier for auto increment column diff --git a/changes.txt b/changes.txt index 50b8f46f..ad042483 100644 --- a/changes.txt +++ b/changes.txt @@ -1,5 +1,6 @@ Adminer 4.1.1-dev: Fix reading routine column collations +Unlock session in alter database MySQL: Use utf8mb4 if available Adminer 4.1.0 (released 2014-04-18)