Изменить чувствительность к регистру MySql с помощью phpMyAdmin?

Я использую Blogengine.Net и заметил, что все таблицы созданы в нижнем регистре (имя таблицы be_settings), но многие запросы написаны в смешанном регистре (Select * from be_Settings). Это прекрасно работает, если ваш экземпляр MySql работает в Windows или настроен на совместимость с Windows. Я получаю сообщение об ошибке, так как экземпляр MySql моего хостинг-провайдера чувствителен к регистру. Есть ли параметр, который я могу изменить, чтобы исправить эту ошибку через phpMyAdmin? Я не хочу рыться во всем коде и исправлять BlogEngine.Net, если мне не нужно.

4 ответа

Решение

Если вы пытаетесь решить эту проблему для BlogEngine.Net, вы можете легко переименовать все таблицы, чтобы использовать CamelCase, поскольку все запросы в BlogEngine.Net написаны с использованием CamelCase.

Чувствительность к регистру в именах таблиц MySQL зависит от ОС. Данные MySQL хранятся в файлах, которые подчиняются любым правилам, которые устанавливает ОС. Linux, например, чувствителен к регистру.

Существует переменная lower_case_table_names, которой можно манипулировать, но кажется, что вам придется воссоздать все ваши таблицы.

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

Параметр, который вам нужен, это lower_case_table_names (установлен в 1 или 2). К сожалению, это нужно будет установить при запуске демона MySQL, а не через phpmyadmin. Не могли бы вы попросить вашего хостинг-провайдера сделать это для вас?

Как создается база данных? Вы можете обнаружить, что запросы, которые создают таблицы, используют правильный регистр:

CREATE TABLE be_Settings ( ... )

Просто таблицы myisam хранятся в виде файлов в файловой системе, а поскольку они в Windows, они просто преобразуются в нижний регистр. Если вы создадите базу данных из этих запросов в системе Linux, вы обнаружите, что все таблицы в правильном случае.

Урок из этого состоит в том, чтобы всегда делать имена таблиц строчными...

Другие вопросы по тегам