Bug #47764 partitioned innodb tables can't be moved directly from windows to linux
Submitted: 1 Oct 16:52 Modified: 3 Oct 9:36
Reporter: Shane Bester
Status: Verified
Category:Server: InnoDB Severity:S2 (Serious)
Version:5.1.39 OS:Any
Assigned to: Jimmy Yang Target Version:
Triage: Triaged: D3 (Medium)

[1 Oct 16:52] Shane Bester
Description:
If you create a partitioned innodb table on windows, then copy the datadir to linux, it
should work.  However, we see this when trying to open the table:

090929 19:59:29 [ERROR] Failed to open table test/t1#P#p0 after 10 attemtps.

090929 19:59:29 [ERROR] Cannot find or open table test/t1#P#p0 from
the internal data dictionary of InnoDB though the .frm file for the
table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files
of InnoDB tables, or you have moved .frm files to another database?
or, the table contains indexes that this version of the engine
doesn't support.
See http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html
how you can resolve the problem.

How to repeat:
on windows: mysqld --no-defaults --console

drop table if exists t1;
create table t1(a int)engine=innodb partition by key(a) partitions 10;

Now copy entire datadir to linux installation:

check table t1;
show table status;

examine error log..

Suggested fix:
we should maintain cross platform compatibility as was always done
[2 Oct 18:03] Michael Izioumtchenko
I wonder if it is related to Windows filenames being case insensitive.
[3 Oct 9:36] Sveta Smirnova
Set to "Verified" again: verified as described as discussed with Shane before:

win-x86> ./bin/mysql -uroot test -P33051
drop table if exists t1;
create table t1(a int)engine=innodb partition by key(a) partitions 10;
\q
win-x86> tar -cf bug47764.tar data
win-x86> gzip bug47764.tar 

linux>tar -xzf bug47764.tar.gz 

linux>./bin/mysql -uroot  --socket=/tmp/mysql_ssmirnova.sock  test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.40-debug Source distribution

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

mysql> check table t1;
+---------+-------+----------+-------------------------------+
| Table   | Op    | Msg_type | Msg_text                      |
+---------+-------+----------+-------------------------------+
| test.t1 | check | Error    | Table 'test.t1' doesn't exist |
| test.t1 | check | status   | Operation failed              |
+---------+-------+----------+-------------------------------+
2 rows in set (1.00 sec)

mysql> show table status;
Empty set (1.00 sec)

mysql> \q
Bye

linux> cat data/linux.err
...
091003  9:33:17 [ERROR] Failed to open table test/t1#P#p0 after 10 attemtps.

091003  9:33:17 [ERROR] Cannot find or open table test/t1#P#p0 from
the internal data dictionary of InnoDB though the .frm file for the
table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files
of InnoDB tables, or you have moved .frm files to another database?
or, the table contains indexes that this version of the engine
doesn't support.
See http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html
how you can resolve the problem.