Являются ли имена таблиц в MySQL чувствительными к регистру?
имена таблиц в MySQL чувствительны к регистру?
на моей машине Windows dev код, который у меня есть, может запрашивать мои таблицы, которые, как представляется, все строчные. При развертывании на тестовом сервере в нашем центре обработки данных имена таблиц начинаются с заглавной буквы.
все серверы, которые мы используем, находятся на Ubuntu.
5 ответов:
В Общем:
имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix.
в MySQL базы данных соответствуют каталогам внутри данных справочник. Каждая таблица в базе данных соответствует по крайней мере одной файл в каталоге базы данных. Следовательно, чувствительность к регистру базовая операционная система играет определенную роль в чувствительности к регистру база данных и таблица имена.
можно настроить как имена таблиц сохраняются на диск с помощью системной переменной
lower_case_table_names. (в мой.cnf конфигурация под [mysqld])читать раздел: 10.2.2 Чувствительность К Регистру Идентификатора для получения дополнительной информации.
имена баз данных и таблиц не чувствительны к регистру в Windows и чувствительны к регистру в большинстве разновидностей Unix или Linux.
чтобы решить эту проблему, установите lower_case_table_names в 1
lower_case_table_names=1
это сделает все ваши таблицы в нижнем регистре, независимо от того, как вы их пишите
имена таблиц в MySQL являются записями файловой системы, поэтому они нечувствительны к регистру, если базовая файловая система.
это зависит от
lower_case_table_namesсистемная переменная:show variables where Variable_name='lower_case_table_names'есть три возможных значения для этого:
0- lettercase, указанный вCREATE TABLEилиCREATE DATABASEзаявление. Сравнение имен чувствительно к регистру.1- имена таблиц хранятся в нижнем регистре на диске и сравнения имен не чувствительны к регистру.2- lettercase, указанный вCREATE TABLEилиCREATE DATABASEзаявление, но MySQL преобразует их в нижний регистр при поиске. Сравнение имен не учитывает регистр.
найдите файл
/etc/mysql/my.cnfотредактируйте файл, добавив следующие строки:
[mysqld]
lower_case_table_names=1
sudo /etc/init.d/mysql restartвыполнить
mysqladmin -u root -p variables | grep tableчтобы проверить, чтоlower_case_table_namesи1теперьвозможно, вам придется заново создать эти таблицы, чтобы заставить его работать
Comments