Bug #59408 MySql Symbolic Links not working
Submitted: 11 Jan 2011 1:04 Modified: 14 Apr 2011 13:52
Reporter: binit thapa Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: General Severity:S2 (Serious)
Version:5.5.8 OS:Microsoft Windows (2008 Server 64 bit)
Assigned to: CPU Architecture:Any
Tags: innodb, Sym Links, Symbolic Links, windows
Triage: Triaged: D2 (Serious)

[11 Jan 2011 1:04] binit thapa
Description:
I tried to create symbolic link as described in the manual http://dev.mysql.com/doc/refman/5.5/en/symbolic-links.html
but with no success.

My configuration is simple, a certain database is to be stored in a different hard disk (in I:\data\foo). So, I created foo.sym in the data directory (described by datadir configuration variable in my.ini) with contents I:\data\foo\. Also ensured that the folder exists with all the required permissions.

I also tried the following:
* fat32 and ntfs partitions
* restarting the server.
* ensuring that database foo doesn't already exist
* checking mysql log (.err file) for any possible errors.
* repeating the same procedure in an old xp 32-bit machine, mysql 5.1 and it works there, so my procedure should be ok.

How to repeat:
1. Create a file foo.sym in directory pointed by datadir with contents "I:\data\foo\"
2. Create a folder I:\data\foo
3. Run "show databases" and it doesn't show foo as expected
[11 Jan 2011 15:11] Santo Leto
Thank you for a bug report.
I am able to verify this on a Windows Vista 32-bit machine.

My MySQL Server runs from disk "D". I've created a directory on another disk, "C:\extra-data\bug59408".
Then I've put a file "bug59408.sym" in the data directory of MySQL. Content of the file is "C:\extra-data\bug59408\" (without quotes).

Result:

- v.5.5.8: database "bug59408" is not shown when executing a 'show database' command
- v.5.1.53: it works
- v.5.0.91: it works

* v.5.5.8:

D:\MySQL\mysql-5.5.8-win32\bin>mysql -uroot -p -P55081
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.8-log MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

mysql> show variables like 'have_symlink';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_symlink  | YES   |
+---------------+-------+
1 row in set (0.00 sec)

* v.5.1.53:

D:\MySQL\mysql-5.1.53-win32\bin>mysql -uroot -p -P51531
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.53-community-log MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bug59408           |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.05 sec)

mysql> use bug59408
Database changed
mysql> create table t1 (a int);
Query OK, 0 rows affected (0.07 sec)

mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)

* v.5.0.91:

D:\MySQL\mysql-5.0.91-win32\bin>mysql -uroot -p -P50911
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.91-community-log MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bug59408           |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

mysql> use bug59408;
Database changed
mysql> create table t1 (a int);
Query OK, 0 rows affected (0.04 sec)

mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)
[14 Apr 2011 13:52] Paul Dubois
Noted in 5.5.13, 5.6.3 changelogs.

With the conversion from GNU autotools to CMake for configuring
MySQL, the USE_SYMDIR preprocessor symbol was omitted. This caused
failure of symbolic links (described at
http://dev.mysql.com/doc/refman/5.5/en/symbolic-links.html).

CHANGESET - http://lists.mysql.com/commits/135386
[13 Aug 2011 1:12] Paresh Yadav
Hi Paul DuBois,

How can I get and apply this to my current installation "Server version: 5.5.9-log MySQL Community Server (GPL)". Thanks in advance.

Paresh