11.2.4 Сопоставление идентификаторов с именами файлов
Существует соответствие между идентификаторами и именами баз данных и таблиц в файловой системе. Для базовой структуры MySQL представляет каждую базу данных как директорию в каталоге данных, а каждая таблица может быть представлена одним или несколькими файлами в соответствующей директории базы данных, в зависимости от используемого движка хранилища.
Точное представление файлов данных и индексов на диске зависит от используемого движка хранилища. Эти файлы могут храниться в каталоге базы данных, или информация может храниться в отдельном файле. InnoDB данные хранятся в файлах данных InnoDB. Если вы используете табличные пространства с InnoDB, то вместо этого используются созданные вами файлы табличных пространств.
Любой символ допустим в идентификаторах баз данных или таблиц, кроме ASCII NUL (X'00'). MySQL кодирует любые символы, представляющие проблемы в соответствующих объектах файловой системы, при создании каталогов баз данных или файлов таблиц:
Основные латинские буквы (
a..zA..Z), цифры (0..9) и символ подчеркивания (_) кодируются как есть. Соответственно, их чувствительность к регистру напрямую зависит от функций файловой системы.-
Все другие национальные буквы алфавитов, имеющих соответствие верхнего и нижнего регистра, кодируются, как показано в следующей таблице. Значения в столбце «Диапазон кодов» — это значения UCS-2.
Диапазон кодов Шаблон Количество Используемые Неиспользуемые Блоки 00C0..017F [@][0..4][g..z] 5*20= 100 97 3 Latin-1 Supplement + Latin Extended-A 0370..03FF [@][5..9][g..z] 5*20= 100 88 12 Греческий и коптский 0400..052F [@][g..z][0..6] 20*7= 140 137 3 Кириллица + Дополнительная кириллица 0530..058F [@][g..z][7..8] 20*2= 40 38 2 Армянский 2160..217F [@][g..z][9] 20*1= 20 16 4 Числовые формы 0180..02AF [@][g..z][a..k] 20*11=220 203 17 Latin Extended-B + Расширения IPA 1E00..1EFF [@][g..z][l..r] 20*7= 140 136 4 Дополнительная кириллица 1F00..1FFF [@][g..z][s..z] 20*8= 160 144 16 Расширенный греческий .... .... [@][a..f][g..z] 6*20= 120 0 120 ЗАРЕЗЕРВИРОВАНО 24B6..24E9 [@][@][a..z] 26 26 0 Вложенные буквенно-цифровые символы FF21..FF5A [@][a..z][@] 26 26 0 Формы половинной и полной ширины Один из байтов в последовательности кодирует регистр буквы. Например:
LATIN CAPITAL LETTER A WITH GRAVEкодируется как@0G, в то время какLATIN SMALL LETTER A WITH GRAVEкодируется как@0g. Здесь третий байт (Gилиg) указывает регистр. (В файловой системе, нечувствительной к регистру, обе буквы обрабатываются одинаково.)Для некоторых блоков, таких как кириллица, второй байт определяет регистр. Для других блоков, таких как Latin1 Supplement, третий байт определяет регистр. Если два байта в последовательности являются буквами (как в расширенном греческом), то левая буква указывает регистр. Все другие байты букв должны быть в нижнем регистре.
-
Все символы, не являющиеся буквами, за исключением символа подчеркивания (
_), а также буквы алфавитов, не имеющих соответствия верхнего и нижнего регистра (например, иврит), кодируются с использованием шестнадцатеричного представления с использованием строчных букв для шестнадцатеричных цифрa..f:0x003F -> @003f 0xFFFF -> @ffff
Шестнадцатеричные значения соответствуют значениям символов в
ucs2кодировке двойного байта.
В Windows некоторые имена, такие как nul, prn и aux, кодируются путем добавления @@@ к имени, когда сервер создает соответствующий файл или директорию. Это происходит на всех платформах для обеспечения переносимости соответствующего объекта базы данных между платформами.
Следующие имена зарезервированы и дополняются @@@, если используются в именах схем или таблиц:
CON
PRN
AUX
NUL
COM1 до COM9
LPT1 до LPT9
CLOCK$ также входит в эту группу зарезервированных имён, но к нему добавляется не @@@, а @0024. То есть, если CLOCK$ используется в качестве имени схемы или таблицы, он записывается в файловую систему как CLOCK@0024. То же самое справедливо для любого использования $ (знака доллара) в имени схемы или таблицы; он заменяется на @0024 в файловой системе.
Эти имена также записываются в INNODB_TABLES в своих добавленных формах, но записываются в TABLES в их исходных формах, как введены пользователем.
© 2025 Oracle
Licensed under the GPLv2 License.