Вопрос:
Я установил MySql Workbench 6.2 с MySql version 5.6 на 64-разрядную версию Windows 7.
Я хотел бы использовать заглавные буквы в имени моей базы данных и имени таблицы. Поэтому мне нужно установить переменную lower_case_table_names равным 2. Когда я просматриваю вкладку “Общие”, то она выглядит следующим образом:
При нажатии кнопки “Применить” открывается диалоговое окно “Без изменений”.
Независимо от того, когда я пытаюсь создать базу данных с буквой “Столица”, я получаю предупреждение:
Сервер настроен с нижним_case_table_names = 1, который только разрешает строчные символы в именах схем и таблиц.
У меня такое ощущение, что файл my.ini на сервере отличается от файла, указанного в конфигурации файла параметров. Когда я пытаюсь добавить эту переменную вручную
внутри моего файла my.ini, я вижу текст ниже:
# *** DO NOT EDIT THIS FILE. It a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL.
Вот как я застрял в создании моей схемы в течение нескольких дней.
Лучший ответ:
В Windows имя таблицы нечувствительно к регистру. То есть таблица Customer и ваша таблица Customer всегда будут одинаковыми в Windows. Это ограничение файловой системы NT. Это применяется, когда ваш сервер MySQL работает на платформе Windows. Неважно, где работает ваш рабочий стол.
(Вы можете использовать имена таблиц с разными именами для разных таблиц в Linux, BSD и т.п., но это считается очень плохой практикой: делайте это только в том случае, если вы хотите свести своих коллег с ума. Поэтому будьте осторожны.)
Если вы оставите этот параметр lower_case_table_names самостоятельно, вы можете без проблем использовать смешанный регистр в именах таблиц.
Файл my.ini, который фактически использует сервер при его запуске, обычно находится в каталоге data. Процедура установки может скопировать предварительно загруженную версию этого файла, например my_large.ini поверх my.ini, в зависимости от того, что вы пытаетесь сделать.
Ответ №1
Если ваши файлы данных находятся на диске, отличном от диска C: у вас могут быть два файла “my.ini”, один из которых будет находиться на диске C: и при редактировании параметров в Workbench, это файл, который изменяется, когда “My.ini” ваша система фактически работает, остается в силе.
Проверьте C:Program DataMySQLMySQL (версия сервера), чтобы увидеть, есть ли там файл .ini. Если это так, вы, вероятно, обнаружите, что у него есть изменения в нижней части файла, которые необходимо записать на фактический рабочий .ini на диске, на котором действительно хранятся ваши данные.
Ответ №2
В workbench перейдите к: панели управления > Файл параметров > Общие > Системa >
Проверьте “lower_case_table_names”, поместите значение 2.
Закрыть Workbench.
Перезапустить службу MYSQL56
Смотрите img здесь Как включить
Ответ №3
- Изменить этот файл на /etc/mysql/my.cnf
- Добавьте следующие строки:
[туздЫ]
lower_case_table_names = 1
- Перезапустить mysql sudo /etc/init.d/mysql restart
Ответ №4
Вы даже не можете запустить mysqld после изменения параметра lower_case_table_names отличного от другого, чем 1, что по умолчанию.
0 => Вы не должны устанавливать lower_case_table_names в 0 если вы используете MySQL в системе, где каталог данных находится в файловой системе без учета регистра (например, в Windows или macOS). Это неподдерживаемая комбинация, которая может привести к зависанию.
Но попробуйте изменить его на 2:
# Specifies the on how table names are stored in the metadata. # If set to 0, will throw an error on case-insensitive operative systems # If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. # If set to 2, table names are stored as given but compared in lowercase. # This option also applies to database names and table aliases. # NOTE: Modify this value after Server initialization won’t take effect. lower_case_table_names=2
C:Program FilesMySQLMySQL Server 8.0bin> mysqld –defaults-file = “C:Program FilesMySQLMySQL Server 8.0my.ini”
ERROR [MY-011087] [Server, Different lower_case_table_names settings for server (‘2’) and data dictionary (‘1’). ERROR [MY-010020] [Server, Data Dictionary initialization failed.
После инициализации нельзя изменить этот параметр. Поэтому lower_case_table_names необходимо установить вместе с —initialize.
Запрещается запускать сервер с параметром lower_case_table_names который отличается от параметра, используемого при инициализации сервера. Ограничение необходимо, потому что сопоставления, используемые различными полями таблицы словаря данных, основаны на настройке, определенном при инициализации сервера, а перезапуск сервера с другим параметром приведет к несогласованности в отношении того, как упорядочиваются и сравниваются идентификаторы.
mysqld –initialize – консоль –lower_case_table_names = 2
Затем вы получите следующую ошибку в workbench после инициализации сервера снова с помощью lower_case_table_names=2:
A server configuration problem was detected. The server is in a system that does not properly support the selected lower_case_table_names option value. Some problems may occur.
показывать переменные, такие как lower_case_table_names;
+————————+——-+ | Variable_name | Value | +————————+——-+ | lower_case_table_names | 2 |
Итак, вывод: в Windows оставьте значение 1, потому что 0 или 2 не будут работать или, как они выразились, могут возникнуть некоторые проблемы.
Однако у меня есть имена моей базы данных и таблиц, которые появляются с прописными буквами. Который действительно не делает много, потому что сравнение всегда будет:
# If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. # If set to 2, table names are stored as given but compared in lowercase.
Николас