summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/recode.pl14
1 files changed, 11 insertions, 3 deletions
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;