Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

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

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Posochov



Зарегистрирован: 08.11.2005
Сообщения: 1

СообщениеДобавлено: Вс Ноя 19 2006 17: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 20:37    Заголовок сообщения: Ответить с цитатой

У меня вот проблема точно такая. При создании базы данных phpmyadmin меняет заглавные буквы на строчные. В файле my.ini дописал строчку lower_case_table_names = 2, но ничего не изменилось. Пробывал сносить сервер mysql, удалять все бд, потом снова дописывать строчку lower_case_table_names = 2, но всеравно когда созадаю через phpmyadmin имена создаются в нижнем регистре. Почему-то строчка lower_case_table_names = 2 не стработала
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...