summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla.pm1
-rwxr-xr-xcontrib/recode.pl14
2 files changed, 12 insertions, 3 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm
index 5a9d23e14..7c52dd500 100644
--- a/Bugzilla.pm
+++ b/Bugzilla.pm
@@ -53,6 +53,7 @@ our $_request_cache = {};
use constant SHUTDOWNHTML_EXEMPT => [
'editparams.cgi',
'checksetup.pl',
+ 'recode.pl',
];
# Non-cgi scripts that should silently exit.
diff --git a/contrib/recode.pl b/contrib/recode.pl
index 7db01dddf..10a4cbb44 100755
--- a/contrib/recode.pl
+++ b/contrib/recode.pl
@@ -174,9 +174,17 @@ if (exists $switch{'overrides'}) {
my $dbh = Bugzilla->dbh;
-# Make the database give us raw bytes.
-$dbh->do('SET character_set_results = NULL')
- if $dbh->isa('Bugzilla::DB::Mysql');
+if ($dbh->isa('Bugzilla::DB::Mysql')) {
+ # Get the actual current encoding of the DB.
+ my $collation_data = $dbh->selectrow_arrayref(
+ "SHOW VARIABLES LIKE 'character_set_database'");
+ my $db_charset = $collation_data->[1];
+ # Set our connection encoding to *that* encoding, so that MySQL
+ # correctly accepts our changes.
+ $dbh->do("SET NAMES $db_charset");
+ # Make the database give us raw bytes.
+ $dbh->do('SET character_set_results = NULL')
+}
$dbh->begin_work;