Имена таблиц, чувствительных к mysql в запросах
У меня есть php-код, где первые буквы имен таблиц базы данных имеют заглавную букву, где имена таблиц в базе данных находятся в нижнем регистре.
Какую глобальную настройку следует использовать, чтобы в каждом файле кода не было необходимости изменять имена таблиц в том же случае, что и в базе данных.
Ответы
Ответ 1
Метаданные MySQL по умолчанию чувствительны к регистру в Linux. То есть, если у вас есть таблица my_table, в нижнем регистре, то
select * from my_table
будет успешным, если
select * from my_table
не удастся с какой-то таблицей, не существует сообщения.
Если вы хотите, чтобы оба оператора были успешными, вам нужно поставить следующую строку
lower_case_table_names = 1
в вашем /etc/my.cnf или где бы вы не сохраняли свою конфигурацию MySQL. Не забудьте добавить системную переменную в раздел [mysqld] конфигурационного файла.
Ответ 2
Вам нужно проверить идентификатор 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, где регистр букв является значительным, они не работают, если буква неверно.