Trên Unix, giá trị mặc định là lower_case_table_names
là 0. Trên Windows, giá trị mặc định là 1. Trên Mac OS X, mặc định là 1 trước MySQL 4.0.18 và 2 là 4.0.18.
Để khắc phục điều này, bạn có thể tìm cài đặt: lower_case_table_names trong tệp my.ini của bạn, được tìm thấy trong hoặc xung quanh: C: \ Program Files \ MySQL \ MySQL Server 4.1, tùy thuộc vào phiên bản bạn đang chạy. Nếu bạn không tìm thấy các thiết lập, bạn chỉ có thể thêm nó vào cuối của tập tin my.ini, như tôi đã làm, như vậy:
lower_case_table_names=0
Hãy nhớ khởi động lại dịch vụ MySQL trước khi bạn kiểm tra hay không nó hoạt động.
Nếu bạn đang sử dụng MySQL chỉ trên một nền tảng, bạn thường không phải thay đổi biến lower_case_table_names từ giá trị mặc định của nó. Tuy nhiên, bạn có thể gặp khó khăn nếu bạn muốn chuyển các bảng giữa các nền tảng khác với độ nhạy của hệ thống tệp. Ví dụ, trên Unix, bạn có thể có hai bảng khác nhau có tên my_table và MY_TABLE, nhưng trên Windows những tên đó được coi là giống nhau. Để tránh các vấn đề chuyển dữ liệu phát sinh từ thư của cơ sở dữ liệu hoặc tên bảng, bạn có hai tùy chọn:
Sử dụng lower_case_table_names = 1 trên tất cả các hệ thống. Những bất lợi chính với điều này là khi bạn sử dụng SHOW TABLES hoặc SHOW DATABASES, bạn không thấy tên trong chữ cái gốc của họ.
Sử dụng lower_case_table_names = 0 trên Unix và lower_case_table_names = 2 trên Windows. Điều này bảo tồn thư của cơ sở dữ liệu và tên bảng. Điểm bất lợi của điều này là bạn phải đảm bảo rằng các câu lệnh của bạn luôn luôn tham chiếu đến cơ sở dữ liệu và tên bảng của bạn với chữ cái chính xác trên Windows. Nếu bạn chuyển câu lệnh của mình sang Unix, trong đó chữ cái là quan trọng, chúng không hoạt động nếu chữ cái không chính xác.
Ngoại lệ: Nếu bạn đang sử dụng các bảng InnoDB và bạn đang cố gắng tránh những vấn đề chuyển dữ liệu này, bạn nên đặt lower_case_table_names thành 1 trên tất cả các nền tảng để buộc tên được chuyển thành chữ thường.
Nếu bạn định đặt biến hệ thống lower_case_table_names thành 1 trên Unix, trước tiên bạn phải chuyển đổi cơ sở dữ liệu cũ và tên bảng thành chữ thường trước khi dừng mysqld và khởi động lại bằng cài đặt biến mới.
Hãy kiểm tra các trang web của MySQL để biết thêm thông tin về vấn đề này, và một số cảnh báo quan trọng http://dev.mysql.com/doc/refman/4.1/en/identifier-case-sensitivity.html
đây là một câu hỏi thú vị. Gây rắc rối như SQL của bạn làm việc trong Windows và không phải trong hệ thống dựa trên Unix. AFAIK, không có giải pháp nào ngoài nó. – Nishant