Lower_case_table_names установлено в 2, Workbench по-прежнему не разрешает имя базы данных в нижнем регистре

mysql
Вопрос:Я установил MySql Workbench 6.2 с MySql version 5.6 на 64-разрядную версию Windows 7. Я хотел бы использовать заглавные буквы в имени моей базы данных и имени таблицы. Поэтому мне нужно установить переменную lower_case_table_names равным 2. Когда я просматриваю вкладку "Общие", то она выглядит следующим образом: При нажатии кнопки "Применить" открывается диалоговое окно "Без изменений".

Вопрос:

Я установил MySql Workbench 6.2 с MySql version 5.6 на 64-разрядную версию Windows 7.

Я хотел бы использовать заглавные буквы в имени моей базы данных и имени таблицы. Поэтому мне нужно установить переменную lower_case_table_names равным 2. Когда я просматриваю вкладку “Общие”, то она выглядит следующим образом:
enter image description here
При нажатии кнопки “Применить” открывается диалоговое окно “Без изменений”.
Независимо от того, когда я пытаюсь создать базу данных с буквой “Столица”, я получаю предупреждение:

Сервер настроен с нижним_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

  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.

Николас

Оцените статью
Добавить комментарий