Posochov
Зарегистрирован: 08.11.2005 Сообщения: 1
|
Добавлено: Вс Ноя 19 2006 16:43 Заголовок сообщения: Использование заглавных букв в именах таблиц MySQL |
|
|
Вообще говоря это вопрос довольно тонкий, и нужно внимательно все читать.
Вот выдержка из оффициального мануала для параметра lower-case-table-names
Цитата: | 0 Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE statement. Name comparisons are case sensitive. Note that if you force this variable to 0 with --lower-case-table-names=0 on a case-insensitive filesystem and access MyISAM tablenames using different lettercases, index corruption may result.
1 Table names are stored in lowercase on disk and name comparisons are not case sensitive. MySQL converts all table names to lowercase on storage and lookup. This behavior also applies to database names and table aliases.
2 Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE statement, but MySQL converts them to lowercase on lookup. Name comparisons are not case sensitive. Note: This works only on filesystems that are not case sensitive! InnoDB table names are stored in lowercase, as for lower_case_table_names=1.
*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 don't see the names in their original lettercase.
*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. The disadvantage of this is that you must ensure that your statements always refer to your database and table names with the correct lettercase on Windows. If you transfer your statements to Unix, where lettercase is significant, they do not work if the lettercase is incorrect.
Exception: If you are using InnoDB tables, you should set lower_case_table_names to 1 on all platforms to force names to be converted to lowercase. |
Вот как я это прочитал:
1. Не следует присваивать lower_case_table_names = 0, если MySQL запускается в системе, которая не поддерживает имен файлов, чувствительных к регистру(такие как Windows).
2. Если lower_case_table_names = 1, имена таблиц будут сохранятся на диск с использованием строчных букв, а имена таблиц не будут чувствительны к регистру.
3. Если нужна поддержка чувствительности к регистру в именах таблиц, то в Unix следует применять lower_case_table_names = 0, а в Windows lower_case_table_names = 2.
Я как раз под Windows использую lower_case_table_names = 2 на базе InnoDB, хотя в мануале для InnoDB рекомендуют использовать lower_case_table_names = 1, чтобы все было в нижнем регистре.
При этом все имена таблиц отображаются с поддержкой верхнего регистра, кроме views.
Далее я создаю дамп базы InnoDB в виде SQL файла.
В Unix по умолчанию lower_case_table_names = 0, и при восстановлении базы под Unix регистр в именах таблиц благополучно сохраняется, но!!!
Все это работает если не используешь views, потому что именно в них Windows все имена таблиц пишет в нижнем регистре, в том числе и имя самой view, и для того чтобы это перенести под Unix приходится вручную в SQL файле все имена таблиц в описаниях views исправлять в верхний регистр.
Отсюда и вышел мой вопрос:
Можно ли как-то Windows, при lower_case_table_names = 2, заставить не менять регистр в именах таблиц при создании views, чтобы не исправлять имена таблиц в описаниях views вручную. |
|
Ivan093
Зарегистрирован: 16.03.2012 Сообщения: 1
|
Добавлено: Пт Мар 16 2012 19:37 Заголовок сообщения: |
|
|
У меня вот проблема точно такая. При создании базы данных phpmyadmin меняет заглавные буквы на строчные. В файле my.ini дописал строчку lower_case_table_names = 2, но ничего не изменилось. Пробывал сносить сервер mysql, удалять все бд, потом снова дописывать строчку lower_case_table_names = 2, но всеравно когда созадаю через phpmyadmin имена создаются в нижнем регистре. Почему-то строчка lower_case_table_names = 2 не стработала |
|