Stephen, MySQL does not maintain internal dictionary where it could keep the list of tables (but InnoDB does for its own purpose!). Instead, MySQL relies on the information from the underlying file system. Since Windows does not care about case of file names, 'users.frm', 'Users.frm' and 'UsErS.frm' are all the same file, in MySQL 'users', 'Users' and 'USERS' will all be the same table. On the other hand, Linux has case sensitive file names, so 'users.frm' and 'Users.frm' are two different files. In this case 'users' and 'Users' also become two different tables.
Your problem is easy to fix, but the solution will depend on how the MySQL server on Windows was configured and how the tables were created both in MySQL and on disk. Typically either performing dump & restore or setting lower_case_table_names=1 option (or both) on Linux is enough, however in certain circumstances it may not be. Please refer to this page http://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html as it will most likely contain the answers you need. Maciek
