Являются ли имена таблиц в регистре MySQL чувствительными к регистру?

Являются ли имена таблиц в регистре MySQL чувствительными?

На моей машине Windows dev код, который у меня есть, может запрашивать мои таблицы, которые кажутся строчными. Когда я развертываю на тестовый сервер в нашем центре данных, имена таблиц начинаются с заглавной буквы.

Серверы, которые мы используем, находятся на Ubuntu.

Ответ 1

В целом:

Имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix.

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

Можно настроить, как имена таблиц хранятся на диске с использованием системной переменной lower_case_table_names. (в конфигурации my.cnf в разделе [mysqld])

Прочтите раздел: 10.2.2 Чувствительность регистра идентификатора для получения дополнительной информации.

Ответ 2

Имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix или Linux.

чтобы решить проблему, установите нижние_файлы_таблицы на 1

lower_case_table_names = 1

это сделает все ваши таблицы строчными, независимо от того, как вы их пишете

Ответ 3

Имена таблиц в MySQL - это записи в файловой системе, поэтому они нечувствительны к регистру, если основная файловая система.

Ответ 4

Это зависит от системной переменной lower_case_table_names:

show variables where Variable_name='lower_case_table_names'

Для этого есть три возможных значения:

  • 0 - регистр букв, указанный в инструкции CREATE TABLE или CREATE DATABASE. Сравнение имен чувствительно к регистру.
  • 1. Названия таблиц хранятся в нижнем регистре на диске, а сопоставления имен не чувствительны к регистру.
  • 2 - буквенный код, указанный в инструкции CREATE TABLE или CREATE DATABASE, но MySQL преобразует их в нижний регистр при поиске. Сравнение имен не чувствительно к регистру.

Документация