6.1.3 Чувствительность имен к регистру
В MySQL имена баз данных и таблиц соответствуют директориям и файлам
внутри директорий. Следовательно, чувствительность к регистру операционной
системы, под которой работает MySQL, определяет чувствительность к
регистру имен баз данных и таблиц. Это означает, что имена баз данных и
таблиц нечувствительны к регистру под Windows, а под большинством версий
Unix проявляют чувствительность к регистру (за исключением Mac OS X).
See section 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 при
сохранении и поиске будет преобразовывать все имена таблиц к нижнему
регистру. Обратите внимание на то, что при изменении этого параметра перед
запуском mysqld
необходимо прежде всего преобразовать имена всех старых
таблиц к нижнему регистру.
При переносе MyISAM
-файлов с Windows на диск в одной из операционных
систем семейства Unix в некоторых случаях будет полезна утилита
mysql_fix_extensions
для приведения в соответствие регистров расширений
файлов в каждой указанной директории базы данных (нижний регистр `.frm',
верхний регистр `.MYI' и `.MYD'). Утилиту mysql_fix_extensions
можно найти в
подкаталоге `script'.
Add your own comment.