Search code examples
mysqlcyrillicdrop

How can drop database with a cyrillic symbol in the name?


I have two databases in /var/lib/mysql/:

test_@x0m
test_cm

The database test_@x0m has the cyrillic symbol in the name.

In mysql this databases look like:

test_?m
test_cm

I want to remove database with the cyrillic symbol. I use commands:

drop database `test_@x0m`;
drop database `test_?m`;
drop database `test_\?m`;

But get result:

Unknown database

How can i drop database with the cyrillic symbol.

Thank you.


Solution

  • It looks like you need to set the correct encoding when connecting to mysql. First of all check the default encoding variables:

    mysql> show variables like '%character%';
    +--------------------------+-------------------------------------+
    | 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       | /usr/share/percona-server/charsets/ |
    +--------------------------+-------------------------------------+
    

    If you see something like that then you need to switch your session settings to UTF8

    mysql> SET NAMES utf8;
    Query OK, 0 rows affected (0.00 sec)
    

    And now you can delete the database with any utf character by simply entering it into mysql console