Если у меня есть имена столбцов: category_id
и Category_Id
, они разные?Являются ли регистр столбцов и таблиц в MySQL более чувствительными?
И если у меня есть стол под названием category
и Category
, они разные?
Если у меня есть имена столбцов: category_id
и Category_Id
, они разные?Являются ли регистр столбцов и таблиц в MySQL более чувствительными?
И если у меня есть стол под названием category
и Category
, они разные?
В Unix имена таблиц чувствительны к регистру. В Windows это не так. Весело, не так ли? Собственно, как их соответствующие файловые системы. Считаете ли вы, что это совпадение?
Другими словами, если вы планируете развертывание на Linux-машине, лучше протестируйте свой SQL на базе Linux на базе Linux или будьте готовы к таинственным ошибкам «таблицы не найденные» в prod time. В наши дни ВМ дешево.
Имена полей не зависят от регистра.
EDIT: мы говорим об операционной системе на сервере MySQL машине, а не клиенту.
Нет, имена таблиц и строк не чувствительны к регистру, и даже инструкции SQL не являются. Итак, имена, которые вы указали в качестве примера, идентичны
Редактировать: Это зависит от сортировки сервера. Поэтому вы должны проверить настройки. Не относится к ОС.
Неправильный - у Севы Алексеева есть все права. –
Извините, я столкнулся с этим на собственном опыте. Получил психические шрамы, чтобы доказать. –
Для имен баз данных и таблиц это зависит от операционной системы. См. 8.2.2. Identifier Case Sensitivity
Возможно, вам необходимо найти this. В MySQL можно установить чувствительность к регистру, но это действительно проблема только при работе в нескольких средах.
Да, я использовал lower_case_table_names = 1 в linux. Он работает, но только для таблиц, созданных после применения этого параметра. –
Вкратце: добавьте строку 'lower_case_table_names = 1' под' [mysqld] 'в' my.cnf'. – Shautieh
С MySQL documentation: имена
баз данных и таблиц не чувствительны к регистру в Windows, и дело чувствительны в большинстве разновидностей Unix. Одним из примечательных исключений является Mac OS X, основанный на Unix, но использующий тип файловой системы по умолчанию (HFS +), который не чувствителен к регистру.
и
столбцы и индексы имена не чувствительны к регистру на любой платформе, ни столбцы псевдонимы.
Странно, это кажется чувствительным к регистру в MySQL Workbench даже в Windows.
Мы просто попытались изменить результаты оператора SELECT, но Workbench не позволил нам, жалуясь, что наш запрос не содержит первичный ключ таблицы (который он сделал, но в нижнем регистре), поэтому результат был прочитан -только. Выполнение того же запроса с использованием первичного ключа в правильном случае (ID вместо id) позволит нам редактировать результаты, как ожидалось.
Из документации MySQL: Хотя имена баз данных и таблиц на некоторых платформах не чувствительны к регистру, вы не должны ссылаться на заданную базу данных или таблицу, используя разные случаи в рамках одного и того же оператора.Следующий оператор не будет работать, потому что он ссылается на таблицу как my_table, так и на MY_TABLE: 'SELECT * FROM my_table WHERE MY_TABLE.col = 1;', поэтому вполне корректно, но в любом случае ее следует рассматривать как чувствительный к регистру ... –
Он не основан на типе таблицы –
Каждая таблица (*** независимо от того, какой движок ***) имеет соответствующий файл '.frm', который хранит структуру данных. Поскольку имена таблицы и файла совпадают, чувствительность к регистру таблиц полностью зависит от чувствительности к регистру файловой системы на сервере. – Cucu