MySQL чувствительные к регистру имена таблиц в запросах

У меня есть php-код, где первая буква имен таблиц базы данных везде заглавными, а имена таблиц в базе данных строчными.

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

2 ответа

Решение

Метаданные MySQL по умолчанию чувствительны к регистру в Linux. То есть если у вас есть таблица my_table в нижнем регистре, то

select * from my_table

будет в то время как

select * from MY_TABLE

потерпит неудачу с какой-то таблицей, не существует сообщения.

Если вы хотите, чтобы оба оператора выполнялись успешно, вам нужно поместить следующую строку lower_case_table_names = 1 в ваш /etc/my.cnf или где бы вы не сохранили конфигурацию MySQL. Обязательно добавьте системную переменную в раздел [mysqld] файла конфигурации.

Вам необходимо проверить идентификатор mysql:

 lower_case_table_names

Вы должны проверить свой my.ini файл находится в вашем mysql каталог. Для получения дополнительной информации об исходных и целевых операционных системах проверьте:

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

Как извлечено из URL выше:

Если вы используете MySQL только на одной платформе, вам обычно не нужно менять переменную lower_case_table_names по умолчанию. Однако вы можете столкнуться с трудностями, если хотите переносить таблицы между платформами, которые отличаются чувствительностью к регистру файловой системы. Например, в Unix у вас могут быть две разные таблицы с именами my_table и MY_TABLE, но в Windows эти два имени считаются идентичными. Чтобы избежать проблем с передачей данных, возникающих из-за букв в базе данных или имен таблиц, у вас есть два варианта:

Use lower_case_table_names=1 on all systems. The main disadvantage with this is that when you use SHOW TABLES or SHOW DATABASES, you do

не вижу имена в их оригинальной упаковке.

Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows. This preserves the lettercase of database and table names.

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

Другие вопросы по тегам