it-swarm.com.ru

нижний_каталог_таблиц_имей установлен в 2, Workbench по-прежнему не допускает строчного имени базы данных

Я установил MySql Workbench 6.2 с MySql version 5.6 на моей Windows 7 64-битной.

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

Сервер настроен с параметром lower_case_table_names = 1, который только позволяет использовать строчные символы в именах схем и таблиц.

У меня такое ощущение, что файл my.ini на сервере отличается от файла, указанного в конфигурации файла опций. Когда я пытаюсь добавить эту переменную вручную Внутри моего файла my.ini, я вижу текст ниже: 

# *** DO NOT EDIT THIS FILE. It's 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.

Вот как я застрял в создании моей схемы в течение нескольких дней.

6
Disasterkid

В Windows в именах таблиц регистр не учитывается. То есть ваша таблица Customer и таблица customer всегда будут одинаковыми в Windows. Это ограничение файловой системы NT. Это применимо, когда ваш MySQL сервер работает на платформе Windows. Неважно, где работает ваш клиент Workbench.

(Вы можете использовать имена таблиц смешанного регистра для разных таблиц в Linux, BSD и т. П., Но это считается очень плохой практикой: делайте это только в том случае, если вы хотите свести с ума своих коллег. Так что будьте осторожны.)

Если вы оставите этот параметр lower_case_table_names в покое, вы можете без проблем использовать смешанный регистр в именах таблиц. 

Файл my.ini, который сервер фактически использует при запуске, обычно находится в каталоге data. Процедура установки может скопировать предварительно загруженную версию этого файла, например my_large.ini поверх my.ini, в зависимости от того, что вы пытаетесь сделать.

7
O. Jones

Если ваши файлы данных находятся на диске, отличном от диска C :, у вас могут быть два файла «my.ini», один из которых будет на диске C: и при редактировании параметров в Workbench это файл, который получает изменилось, пока "My.ini", с которой ваша система фактически работает, осталась одна. Проверьте C:\Program Data\MySQL\MySQL (версия сервера), чтобы увидеть, есть ли там файл .ini. Если это так, вы, вероятно, обнаружите, что в нижней части файла есть изменения, которые необходимо записать в фактический рабочий .ini на диске, на котором действительно хранятся ваши данные.

1
Myron Curtis
  1. Отредактируйте этот файл на /etc/mysql/my.cnf
  2. Добавьте следующие строки:

[ТуздЫ]

lower_case_table_names = 1

  1. Перезапустите mysql Sudo /etc/init.d/mysql restart
0
sendon1982

Вы даже не можете запустить 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 Files\MySQL\MySQL Server 8.0\bin> mysqld --defaults-file = "C:\Program Files\MySQL\MySQL Server 8.0\my.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 --console --lower_case_table_names = 2

Затем вы получите следующую ошибку в рабочей среде после повторной инициализации сервера с помощью 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.

Николас

0
user10755024

В рабочей среде перейдите на: панель управления> Файл параметров> Общие> Система> 

Проверьте "lower_case_table_names", укажите значение 2.

Закрыть Workbench . Перезапустить службу MYSQL56

Смотрите img здесь Как включить

0
Carlos Henrique Ferracin