Название БД и её таблиц (влияние регистра букв)
Всем привет!
Могу поспорить о том, что многие программисты PHP ведут свои локальные разработки на компьютерах под управлением операционной системы семейства Windows (я сам такой, но об этом сильно жалею). И наверное никто и не задумывался написать название БД или её таблиц с большой буквы, сколько я встречал БД все они имеют формат слово_слово, по правилам MySQL они должны начинаться с буквы, могут иметь цифры и знак подчеркивания «_» и прочие знаки. Даже если обратится к документации MySQL, то видно, что и там также применяется подобный формат.
И мало ли кто задумывался о создании таблицы или БД с Большой буквы!!!! А надо было.
Если написать в Windows, что что таблица будет с большой буквы
CREATE TABLE `Test` ( `id` INT(10) NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) COLLATE=utf8_general_ci ENGINE=MyISAM ROW_FORMAT=DEFAULT
то в файловой системе, где хранятся данные о таблице, сами файлы имеют такое же написание, как и название таблицы, т.е. НАЗВАНИЕ ТАБЛИЦЫ ВЛИЯЕТ НА НАЗВАНИЕ ФАЙЛА и ессно зависят от РЕГИСТРА. Получается, что при обращении к таблице из ОС Windows
SELECT * FROM `Test`; или SELECT * FROM `test`;
ответ будет правильным, нам MySQL возвратит какие-то данные, но не дай Боже написать второй запрос в ОС *nix подобных системах — сразу будет исключение! Догадались чего???? Конечно в ОС *nix создание файлов регистрозависимое, и когда мы в запросе пишем название таблицы отличное от созданного, то не находится такой файл и вылетает ОШИБКА!!!! Иногда приходится часы тратить не понимая какого у меня локально все зашибись, а на серваке по *nix все х…во. Да и вообще, если мы юзаем РНР, то и должны писать под ОС на которой будет выполняться код!!
А вот название полей пофиг какие будут буквы, также как и название операторов.
Изначально под виндой запрещено вводить большие буквы в название таблиц))), а вот иногда ну надо!!! Как же быть??
Воть! Все легко и просто — lower_case_table_names настраиваем и можем делать, что угодно.
Удачного, правильного и чистого подхода.
Статья просмотренна 52849 раз, зашло посетителей 18575
Никогда не сталкивался с такой проблемой. Всегда использую имена таблиц в нижнем регистре. А почему ты используешь большие буквы? Требование со стороны заказчика?
На работе был создан фреймворк на основе Зенда, так вот у истоков стояли программеры .Net, а у них все файлы начинаются с большой буквы, ну так принято….
И когда я пришел и начал работать, обратил внимание, поматюкался….. и теперь иногда на грабли наступаю )))
Вообще регистрозависимость это чушь. Винда правильно сделала что ушла от этого. Уж столько в мире граблей расставлено благодаря сомнительной фиче
Ну если посмотреть с точки зрения компьютера буква А и а всё же разные буквы….