В MySQL имена баз данных и таблиц соответствуют директориям и файлам внутри директорий. Следовательно, чувствительность к регистру операционной системы, под которой работает MySQL, определяет чувствительность к регистру имен баз данных и таблиц. Это означает, что имена баз данных и таблиц нечувствительны к регистру под Windows, а под большинством версий Unix проявляют чувствительность к регистру. Одно большое исключение здесь это Mac OS X, когда файловая система по умолчанию HFS+ используется. Однако Mac OS X также поддерживает тома UFS, которые чувствительны к регистру под Mac OS X также как и на Unix. See Раздел 1.9.3, «Расширения MySQL к ANSI SQL92».
Примечание: хотя имена баз данных и таблиц нечувствительны к регистру под
Windows, не следует ссылаться на конкретную базу данных или таблицу,
используя различные регистры символов внутри одного и того же запроса.
Приведенный ниже запрос не будет выполнен, поскольку в нем одна и та же
таблица указана и как my_table
, и как MY_TABLE
:
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
Имена и псевдонимы столбцов нечувствительны к регистру во всех случаях.
Псевдонимы таблиц обладают чувствительностью к регистру. Приведенный ниже
запрос не будет выполнен, поскольку он ссылается на псевдоним и как на a
,
и как на A
:
mysql> SELECT col_name FROM tbl_name AS a -> WHERE a.col_name = 1 OR A.col_name = 2;
Если вы не хотите держать в памяти размер букв для имен базы данных и таблиц, при создании базы данных и таблиц придерживайтесь последовательного принципа, используя для имен только строчные буквы.
Одним из путей устранения этой проблемы является запуск демона mysqld
с
параметром -O lower_case_table_names=1
. По умолчанию этот параметр имеет
значение 1 для Windows и 0 для Unix.
Если значение параметра lower_case_table_names
равно 1, MySQL при
сохранении и поиске будет преобразовывать все имена таблиц к нижнему регистру.
С версии 4.0.2 это также касается и имен баз данных. Обратите внимание на то,
что при изменении этого параметра перед запуском mysqld
необходимо
прежде всего преобразовать имена всех старых таблиц к нижнему регистру.
При переносе MyISAM
-файлов с Windows на диск в Unix в некоторых случаях
будет полезна утилита mysql_fix_extensions
для приведения в соответствие
регистров расширений файлов в каждой указанной директории базы данных (нижний
регистр .frm
, верхний регистр .MYI
и .MYD
). Утилиту
mysql_fix_extensions
можно найти в подкаталоге scripts
.