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, где буквенный регистр имеет значение, они не будут работать, если буквенный регистр неверен.