Bug #37698 Backup fails for Myisam drivers if accented characters are used to create tables
Submitted: 27 Jun 2008 16:02 Modified: 27 Jun 2008 17:39
Reporter: Hema Sridharan Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: Charsets Severity:S3 (Non-critical)
Version:mysql-6.0-backup-myisam OS:Linux
Assigned to: CPU Architecture:Any

[27 Jun 2008 16:02] Hema Sridharan
Description:
1) I created Database and tables using accented letters.
2) When I backup the database, backup fails for Myisam Engines(Native Drivers).

CREATE DATABASE acc1;
USE acc1;
CREATE TABLE `Ͻ±Ï½±åå`(`ë` char(20));
BACKUP DATABASE acc1 to 'acc2.bak';

How to repeat:
mysql> CREATE DATABASE acc1;
Query OK, 1 row affected (0.02 sec)

mysql> USE acc1;
Database changed
mysql> CREATE TABLE `Ͻ±Ï½±åå`(`ë` char(20));
Query OK, 0 rows affected (0.01 sec)

mysql> BACKUP DATABASE acc1 to 'acc2.bak';
ERROR 26 (HY000): Error on realpath() on 'acc1/ý±Ã½±åå.MYI' (Error 2)
[27 Jun 2008 16:34] Susanne Ebrecht
Hema,

I have some questions:

1) which terminal encoding do you used?
2) please copy output from: SELECT VARIABLES LIKE 'char%';
3) also we need output from: SHOW CREATE TABLE and SHOW CREATE DATABASE
Important here the charset settings
4) I need output from your user account and from the account of the owner of your mysqld:
$ locale -a
5) I think that's all what I need for analysing.:)
[27 Jun 2008 16:40] Susanne Ebrecht
Hema,

sorry, I need output from:
$ locale

without -a. And that's because I need to know which encoding your file system is using.
[27 Jun 2008 17:03] Hema Sridharan
mysql> show variables like 'char%';
+--------------------------+--------------------------------------------+
| Variable_name            | Value                                      |
+--------------------------+--------------------------------------------+
| character_set_client     | latin1                                     |
| character_set_connection | latin1                                     |
| character_set_database   | latin1                                     |
| character_set_filesystem | binary                                     |
| character_set_results    | latin1                                     |
| character_set_server     | latin1                                     |
| character_set_system     | utf8                                       |
| character_sets_dir       | /home/hs221732/hemap/share/mysql/charsets/ |
+--------------------------+--------------------------------------------+
8 rows in set (0.00 sec)

show create table `Ͻ±Ï½±åå`;
+----------+----------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                 |
+----------+----------------------------------------------------------------------------------------------+
| Ͻ±Ï½±åå | CREATE TABLE `Ͻ±Ï½±åå` (
  `ë` char(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+----------+----------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql> show create database acc1;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| acc1     | CREATE DATABASE `acc1` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

NOTE: I set names to utf8, still I get the same error that Backup Fails. 
Also this is an issue with Backup for Myisam Native drivers and not with character sets. 
The same database is backed up properly if it uses Innodb storage engine.
I use root user account.
[27 Jun 2008 17:39] Susanne Ebrecht
Many thanks for reporting a bug report.

This is not a bug.
You made a horrible encoding mix here.
I can't repeat this by using proper encoding handling.

Please try the following:

YOUR TERMINAL: UTF8

SET NAMES UTF8;
CREATE DATABASE acc1; -- if you want you can try this also with: CHARACTER SET UTF8
USE acc1;
CREATE TABLE `Ͻ±Ï½±åå`(`ë` char(20));
BACKUP DATABASE acc1 to 'acc2.bak';

then just for fun try:
DROP DATABASE acc1;
set your terminal to ISO-8859-15
SET NAMES LATIN1;
CREATE DATABASE acc1;
USE acc1;
CREATE TABLE `Ͻ±Ï½±åå`(`ë` char(20));
BACKUP DATABASE acc1 to 'acc3.bak';

You will see ... also in proper latin environment it will work.